2011-01-13 53 views
2

我有這樣的HTML結構:jQuery的,如果HREF ATTR

<ul class="tabs"> 
      <li><a href="#tab1"><h3>Sound</h3><img class="servicesIcon" src="img/micro.png"></img></a></li> 
      <li><a href="#tab2"><h3>Lighting</h3><img class="servicesIcon" src="img/light.png"></img></a></li> 
      <li><a href="#tab3"><h3>Staging</h3><img class="servicesIcon" src="img/barstool.png"></img></a></li> 
      <li><a href="#tab4"><h3>Sales</h3><img class="servicesIcon" src="img/info.png"></img></a></li> 
      <li><a href="http://www.example.co.uk/" target="_BLANK"><h3>Hire Guide</h3><img class="servicesIcon" src="img/info.png"></img></a></li> 
     </ul> 

與這個jQuery:

$("ul.tabs li").click(function() { 



       $("ul.tabs li").removeClass("active"); //Remove any "active" class 
       $(this).addClass("active"); //Add "active" class to selected tab 
       $(".tab_content").hide(); //Hide all tab content 

       var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content 
       $(activeTab).fadeIn(); //Fade in the active ID content 
       return false; 
      }); 

但我想要做的是,如果 '禮' 被點擊沒有什麼#tab的href然後它只是返回true,並按照正常的鏈接?

回答

3

如果你說你不想讓處理程序在沒有#tab的情況下觸發鏈接,那麼只需首先將處理程序分配給它即可。

$("ul.tabs li").slice(0,-1).click(function() { 
    // and so on 

這會將click處理程序分配給除最後一個以外的所有程序。

你還可以做更多的事情是這樣的:

$("ul.tabs li:not(:last)").click(function() { 
    // and so on 

或:

$("ul.tabs li:not(:last-child)").click(function() { 
    // and so on 
+0

感謝,我去了第二個:) – benhowdle89 2011-01-13 15:31:32

+0

@ benhowdie89:不客氣。請記住3,你會得到最慢的性能,因爲它不是一個有效的querySelectorAll選擇器。真的不是太大的交易,因爲這隻會運行一次。 :o) – user113716 2011-01-13 15:33:18

1

如果你有,你可以使用此多個外部鏈接:

var activeTab = $(this).find("a").attr("href"); 
if(activeTab.substr(0,1) == '#'){ //if link starts with # - do fade, else treat as actual link. 
    $(activeTab).fadeIn(); 
    return false; 
} 
else 
    return true; 
3

要完成patrick dw's列表中,通用版本:

$('ul.tabs li:has(a[href^=#tab])').click(function() { 
}); 

這隻會影響li nodes包含錨有與#tab

0

開始你可以使用屬性選擇,只結合其目標的鏈接A HREF開始與字符串#tab

$("ul.tabs a[href^=#tab]").click(function() { 
    //... 
}); 

這將需要您稍微修改您的功能的內容,因爲上下文已經更改(從lia)。

更多的http://api.jquery.com/attribute-starts-with-selector/

0

更新您的HTML如下的語法有點過:

  1. 你不能有內聯元素中塊元素。
  2. <img></img>應該是<img />並且即使它是空白也具有alt屬性。
  3. 您可以將無序列表更改爲有序列表,以讓用戶知道有多少個選項卡。 (您已經標記了HREF = 「... TAB1 TAB2」,所以已經有訂單的話)

    <ol class="tabs"> <li><h3><a href="#tab1">Sound<img alt="" class="servicesIcon" src="img/micro.png" /></a></h3></li> </ol>

1
$("ul.tabs li").click(function() { 

    $("ul.tabs li").removeClass("active"); 
    $(this).addClass("active"); 

    $(".tab_content").hide(); 

    var takE = $(this).attr('href'); //select the href from clicked element 
    var swap = takE.replace('#',''); //strip it, if #tab1 clicked result = 'tab1' 
    $('#' + swap).show(); // this will show clicked element like id="tab1" 

});