2011-07-18 72 views
0

下面的代碼,我參考了互聯網,但它不起作用。爲什麼?我的jquery標籤代碼有什麼問題?

jQuery代碼:

$(document).ready(function(){ 

     $(".tab:not(:first)").hide(); 
     $(".tab:first").show(); 

     $(".htabs a").click(function(){ 

     var stringref = $(this).attr("href").split("#")[1]; 

      $(".tab:not(#"+ stringref +')').hide(); 

      //fix 
      if(jQuery.browser.msie && jQuery.browser.version.substr(0,3)=="6.0"){ 

      $('.tab #'+stringref).show(); 
      }else{ 
      $("tab #"+stringref).fadeIn(); 
       return false; 
      } 
     }); 

的html代碼:

<ul class="htabs hide"> 
     <li><h2><a href="#design">Graphic design</a></h2></li> 
     <li><h2><a href="#development">Development</a></h2></li> 
     <li><h2><a href="#freebies">Freebies</a></h2></li> 
    </ul> 
    <div class="tabs"> 
     <div id="design" class="tab"> 
      <ul> 
       <li><a href="#">TYpography</a></li> 
       <li><a href="#">TYpoface</a></li> 
       <li><a href="#">painting</a></li> 
       <li><a href="#">Optical balance</a></li> 
      </ul>   
     </div> 


     <div id="development" class="tab"> 
      <ul> 
       <li><a href="#">TYpography</a></li> 
       <li><a href="#">TYpoface</a></li> 
       <li><a href="#">painting</a></li> 
       <li><a href="#">Optical balance</a></li> 
      </ul>   
     </div> 


     <div id="freebies" class="tab"> 
      <ul> 
       <li><a href="#">TYpography</a></li> 
       <li><a href="#">TYpoface</a></li> 
       <li><a href="#">painting</a></li> 
       <li><a href="#">Optical balance</a></li> 
      </ul>   
     </div> 



    </div> 


$(this).attr("href").split("#")[1]; what't the meaning of this line? why it's one([1])? 
+0

什麼不適用於它?腳本錯誤?東西不顯示?您需要提供一些有關不工作的信息 – davidsleeps

+0

$(this).attr(「href」)。split(「#」)[1];意思是把href分割成一個'#',它返回一個包含[0] =>''和[1] =>'design' – Paulpro

回答

1

錯誤在於以下兩行:

$('.tab #'+stringref).show(); 

$(".tab #"+stringref).fadeIn(); 

.tab應該從兩個被刪除,所以你必須:

$('#'+stringref).show(); 

$("#"+stringref).fadeIn(); 
+0

另外,如果你發佈了所有的JavaScript,那麼你會錯過關閉到'$(document).ready(function(){',並且你需要在底部添加一個'});'。 – Paulpro

+0

你是對的。謝謝。但是當我使用這個$('。tab#'+ stringref).show();當我點擊標籤。它不顯示內容。而$('。tab#'+ stringref).show();它可以工作,最後是.tab和#之間沒有空格。爲什麼? – zhuanzhou

+1

''.tab#designtail''尋找帶有類標籤的元素,然後搜索它的子代和孫代等,以獲得具有標識詳細信息的元素。而'.tab#design''搜索同時具有class選項卡和id詳細信息的元素。由於身份證是獨一無二的,所有你需要的是#'設計' – Paulpro

1

不知道什麼是不工作...你有一個點缺少一個行:

$(document).ready(function(){ 

$(".tab:not(:first)").hide(); 
$(".tab:first").show(); 

$(".htabs a").click(function(){ 

var stringref = $(this).attr("href").split("#")[1]; 

    $(".tab:not(#"+ stringref +')').hide(); 

    //fix 
    if(jQuery.browser.msie && jQuery.browser.version.substr(0,3)=="6.0"){ 

    $('.tab #'+stringref).show(); 
    }else{ 
    //$("tab #"+stringref).fadeIn(); // Missing a . on this line 
    $(".tab #"+stringref).fadeIn(); // Added the . 
     return false; 
    } 
}); 
+0

的數組,你是對的。謝謝。這條線的含義是什麼? $(本).attr(的 「href」)分割( 「#」)[1]。我知道它獲得了一個標籤的屬性。並擺脫#。但我不知道[1]這部分的含義? – zhuanzhou

1

$(本).attr(「HREF 「).split(」 #「)[1];這條線的意義是什麼?爲什麼它是一個([1])?

這是一個綁定到錨元素的click事件的函數,所以這指的是該元素。因此,代碼採用錨元素的href屬性的值,splits以'#'符號表示,然後在#符號之後。 該代碼不工作,因爲if-else部分中的選擇器不好

$(".tab:not(:first)").hide(); 
    $(".tab:first").show(); 

    $(".htabs a").click(function(){ 

    var stringref = $(this).attr("href").split("#")[1]; 

     $("div.tab:not(#"+ stringref +')').hide(); 

     //fix 
     if(jQuery.browser.msie && jQuery.browser.version.substr(0,3)=="6.0"){ 

     $('#'+stringref).show(); //fixed selector 
     }else{ 
     $("#"+stringref).fadeIn(); //fixed selector 
     } 
     return false; 
    }); 
+0

爲什麼我不能使用這個$(this).attr(「href」)。split(「#」)? – zhuanzhou

+0

,因爲split將返回2個元素的數組。第一個是空字符串,第二個是#之後的任何字符串。所以你用[1]來獲得數組的第二個元素。 –