我有这个html结构:
<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;
});
但我想要做的是如果单击'li'没有#tab的href,那么它只返回true并正常跟随链接?
答案 0 :(得分:3)
如果你说你不希望处理程序在没有#tab
的情况下为链接触发,那么就不要在第一时间为它分配处理程序。
$("ul.tabs li").slice(0,-1).click(function() {
// and so on
这会将点击处理程序分配给除最后一个之外的所有处理程序。
你也可以做更多这样的事情:
$("ul.tabs li:not(:last)").click(function() {
// and so on
或:
$("ul.tabs li:not(:last-child)").click(function() {
// and so on
答案 1 :(得分:3)
完成patrick dw's
列表,通用版本:
$('ul.tabs li:has(a[href^=#tab])').click(function() {
});
这只会影响li nodes
,其中包含一个以#tab
答案 2 :(得分: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 :(得分: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"
});
答案 4 :(得分:0)
您可以使用属性选择器仅绑定目标以字符串#tab
开头的链接:
$("ul.tabs a[href^=#tab]").click(function() {
//...
});
这将要求您稍微修改函数的内容,因为上下文已经更改(从li
到a
)。
答案 5 :(得分:0)
按如下方式更新您的HTML,因为语法稍微偏离:
<img></img>
应该是<img />
并且即使它是空白也有alt属性。您可以将无序列表更改为有序列表,以便用户知道有多少个选项卡。 (您已经在标记href =“tab1 ... tab2”,因此已经有了订单)
<ol class="tabs">
<li><h3><a href="#tab1">Sound<img alt="" class="servicesIcon" src="img/micro.png" /></a></h3></li>
</ol>