2012-02-16 134 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