2012-02-16 89 views
-1

最后我通过下面的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返回去了默认的类没有“选择”类..am新tis ..我努力奋斗..需要帮助.. ??

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

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

回答

0

点击锚页面会导航到锚的href属性设置的URL后所以无论你做的JavaScript操作是怎么回事在页面加载后会丢失。

如果您想突出显示选定的链接,您可以发送链接ID或某个标识符以及url,然后在页面加载时检查并选择适当的链接。

顺便说一句toggleClass根据类的存在或switch参数的值,在匹配元素集合中的每个元素中添加或删除一个或多个类。

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

你有太多的JavaScript了。

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

+0

它不工作..如果删除removeClass,然后如果我点击下一个选项卡,前一个选项卡也是活动.. – Suren 2012-02-16 05:53:53

+0

(jsfiddle.net/Suren/u4szQ/1) – Suren 2012-02-16 06:13:06

+0

没有冒犯,但该代码是各种一团糟。请参阅我的答案更新小提琴编辑。 – Scott 2012-02-16 06:49:29