单击链接后菜单未激活..(页面加载后)

时间:2012-02-16 05:12:37

标签: javascript jquery

最后我按照javascript实现了这个..

  function extractPageName(hrefString)
{
    var arr = hrefString.split('/');
    return  (arr.length<2) ? hrefString : arr[arr.length-2].toLowerCase() + arr[arr.length-1].toLowerCase();               
}

function setActiveMenu(arr, crtPage)
{
    for (var i=0; i<arr.length; i++)
    {
        if(extractPageName(arr[i].href) == crtPage)
        {
            if (arr[i].parentNode.tagName != "DIV")
            {
                arr[i].className = "selected";
                arr[i].parentNode.className = "selected";
            }
        }
    }
}

function setPage()
{
    hrefString = document.location.href ? document.location.href : document.location;

    if (document.getElementById("but_a")!=null)
        setActiveMenu(document.getElementById("but_a").getElementsByTagName("a"), extractPageName(hrefString));
}

如果我点击ul而不点击链接..它工作..当我点击链接。它一直有效,直到页面加载。在页面加载之后,ul back groud默认类没有“选中”类......对于tis来说是新的...我很难挣扎......需要帮助.. ??

我在这里添加了一个jdFiddle示例:

http://jsfiddle.net/Suren/u4szQ/1/

2 个答案:

答案 0 :(得分:3)

  $(document).ready(function() { 
    $("a.button").click(function () {
        $(this).toggleClass("selected");
    });
  });

你那里有太多的javascript。

你发布的小提琴后。 Here is a working fiddle. 请注意,您有大量格式错误的HTML。您不能在列表项之间放置div。您不能在具有相同ID的页面上拥有多个对象(而是使用类)。

答案 1 :(得分:0)

点击锚点之后,页面将导航到锚点href属性上设置的网址,因此无论您执行的javascript操作在页面加载后都会丢失。

如果您想突出显示所选链接,您可以发送链接ID或一些标识符以及网址,然后在页面加载时检查它并设置选择的相应链接。

顺便说一句toggleClass在匹配元素集中的每个元素中添加或删除一个或多个类,具体取决于类的存在或switch参数的值。