2015-04-01 60 views
0

我有這個功能,通過導航欄中的每個麪包屑,我想改變麪包屑的樣式取決於他們在哪個頁面上。無法刪除css類並添加一個新的

這裏是麪包屑導航欄的基本HTML

<div id="WCBar"> 

<div class="bc_nav current span" id="bc_main"> 
<a class="bc_1" id="lnkCrumb" href="javascript:__doPostBack('ctl00$breadcrumbnav1$ctl00$lnkCrumb','')"> 
<li>Account Info</li></a> 
<span class="step-arrow"></span> 
<input name="ctl00$breadcrumbnav1$ctl00$hdnPageName" id="hdnPageName" type="hidden" value="WCQuoteMain2.aspx"> 
</div> 


<div class="bc_nav a" id="bc_main"> 
<a class="aspNetDisabled bc_2" id="lnkCrumb"> <li>Rate</li></a> 
<span class="step-arrow"></span> 
<input name="ctl00$breadcrumbnav1$ctl01$hdnPageName" id="hdnPageName" type="hidden" value="WCQuoteRatingV4.aspx"> 
</div> 

<div class="bc_nav a" id="bc_main"> 
<a class="aspNetDisabled bc_3" id="lnkCrumb"><li>Questions</li></a> 
<span class="step-arrow"></span> 
<input name="ctl00$breadcrumbnav1$ctl02$hdnPageName" id="hdnPageName" type="hidden" value="questions.aspx"></div> 

<div class="bc_nav last" id="bc_main"> 
<a class="aspNetDisabled bc_4" id="lnkCrumb"><li>Final</li></a> 
<span class="step-arrow" style="background-image: none;"></span> 
<input name="ctl00$breadcrumbnav1$ctl03$hdnPageName" id="hdnPageName" type="hidden" value="managesubmission.aspx"></div> 

然後調用Javascript中這樣的功能:

function WCBar(pagename, iframepagename, currentSet) { 
$('.bc_nav', $('#WCBar')).each(function() { 
    iframepagename = $(this).find('input[id*="hdnPageName"]').attr('value'); 
    var bcMain = $(this).find('div[id*="bc_main"]'); 
    var lnkCrumb = $(this).find('a[id*="lnkCrumb"]'); 
    if (pagename == iframepagename) { 
     //bcMain.addClass("current span"); 
     bcMain.attr("class", "current span"); 
     currentSet = 1; 
     // notify server 
     $.ajax({ 
      type: "POST", 
      url: window.location.pathname + "/UpdateIFrameBreadcrumb", 
      data: "{'pagename':'" + iframepagename + "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       // alert(msg.d); 
      }, 
      error: function (msg) { 
       // alert(msg.d); 
      } 
     }); 
    } 
    else { 
     if (lnkCrumb[0].href.length > 1) { //&& currentSet == 0 
      //bcMain.attr("class", "bc_nav enabled span"); 
      bcMain.removeClass("bc_nav"); 
      bcMain.addClass("bc_nav enabled span"); 
     } 
     else { 
      //bcMain.attr("class", "bc_nav a"); 
      bcMain.removeClass(); 
      bcMain.addClass("bc_nav a"); 
     } 
    } 
}); 

}

當我鼠標移到bc_Main調試會話期間,上下文> className顯示正確的類,但試圖確定bc_main是否有一個類的結果

?bcMain.hasClass('bc_nav'); 
false 

在Visual Studio的立即窗口中。

此外,試圖確定什麼值在課堂上讓我一個未定義的錯誤。

var x = bcMain.attr('class'); 
undefined 

無級是不斷從bc_main刪除,不管我嘗試.removeClass(),讓它空,或者嘗試.removeClass('bc_nav');

我已經檢查,以確保沒有其他地方違約,並不能找到任何東西。

感謝您的幫助。

+0

您不能擁有多個具有相同ID的div,這可能會導致/影響問題。 – DasBeasto 2015-04-01 19:37:10

回答

0

如果你試圖清空類屬性的使用:

$('#myElementID').removeAttr('class'); 

或本

$('#myElementID').attr('class', ''); 

要刪除特定類,您必須使用類名:

$('#myElementID').removeClass('myClassName'); 

另外,FWIW,在else語句中,該行

bcMain.removeClass("bc_nav"); 

是沒有意義的,是它,再接這個

bcMain.addClass("bc_nav enabled span"); 
1

它看起來像一個範圍問題。你正在使用這個來執行你找不到的東西。您的.bc_nav elis實際上是您的#bc_main el,所以您不妨將$(this)當作bcMain。我不知道你爲什麼要迭代.bc_nav和#WCBar,看起來你應該只使用.bc_nav。

$('.bc_nav', $('#WCBar')).each(function() { 
    ... 
    var bcMain = $(this).find('div[id*="bc_main"]'); 

說$(本),在這種情況下是相同的話說$(」。bc_nav '),所以你基本上是做$('。bc_nav ')。找到(' DIV [ID * =「bc_main 「]');這將不起作用,因爲#bc_main不是.bc_nav的子項。

相關問題