尝试比较本地存储字符串与url字符串不起作用

时间:2013-05-17 15:54:55

标签: javascript jquery html5 local-storage

这是我正在尝试做的基本前提:

假设你有一个简单的嵌套列表:

<ul>
   <li>chevy</li>
   <li>dodge</li>
   <li id="trucks">ford
      <ul>
        <li>ranger</li>
        <li>f150</li>
        <li>f250</li>
      </ul>
   </li>
   <li>kia</li>
</ul>

默认情况下,隐藏嵌套的福特菜单选项。单击“ford”链接后,当新页面打开时,带有“ranger”,“f150”和“f250”的嵌套div将打开并显示嵌套菜单。

我的想法是抓取点击事件<li>上的id,将其作为字符串放入localStorage,然后在新页面加载上,将url子字符串与本地存储字符串进行比较如果它们匹配,则放一个display: block类,然后使菜单可见。

这是我到目前为止的jQuery,但是当我尝试比较两者时,我一直得到“不”说这些不一样。这是我现在挂断的一件事,似乎无法弄明白。

//get the id on the div and then store as a string
function storeId() {
    $mtv('.features > ul > li > a').click(function() {
        var name = $mtv (this).attr('id');
        localStorage.setItem( 'name', JSON.stringify(name) );
    });

};

//retrieve the storage item and compare to id clicked
function retrieveId() {
    localStorage.getItem( 'name' );
    var retrieve = localStorage.getItem('name');
    var url = window.location.pathname;
    var currentUrl = url.substring(url.lastIndexOf('/')+1).replace('.html', '');
    if (currentUrl === retrieve ){
        alert("yes");
    }
    else {
        alert("no")
    }
};

非常感谢任何帮助,

d

1 个答案:

答案 0 :(得分:0)

使用var name = $mtv(this).attr('id');您正试图获取链接ID

因为你想获得李的身份试试这个 -

var name = $mtv(this).closest('li').attr('id');