Javascript 在jQuery中使用$(this)并不总是有效的
在下面的第6行,我有Javascript 在jQuery中使用$(this)并不总是有效的,javascript,jquery,Javascript,Jquery,在下面的第6行,我有$(“ul.tabrow li”).removeClass(“active”)//如果我将任何“活动”类更改为使用$(this),请删除该类。如果改为删除类(“活动”),则该类将无法正常工作 代码的工作方式是我现在想要的,我只是想知道为什么我上面提到的不起作用,在下面的第7行中,我使用了$(this),在第7行的代码上使用的是相同的选择器,但在第6行中使用的是不同的选择器 有人能解释一下吗 $("ul.tabrow li").bind({ click: function(
$(“ul.tabrow li”).removeClass(“active”)//如果我将任何“活动”类更改为使用$(this),请删除该类。如果改为删除类(“活动”)
,则该类将无法正常工作
代码的工作方式是我现在想要的,我只是想知道为什么我上面提到的不起作用,在下面的第7行中,我使用了$(this)
,在第7行的代码上使用的是相同的选择器,但在第6行中使用的是不同的选择器
有人能解释一下吗
$("ul.tabrow li").bind({
click: function() {
return false;
},
mouseenter: function() {
$("ul.tabrow li").removeClass("active"); //Remove any "active" class
$(this).addClass("active"); //Add "active" class to selected tab
$(".tab-box").hide(); //Hide all tab content
var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
//$(activeTab).fadeIn(); //Fade in the active content
$(activeTab).show(); //Fade in the active content
return false;
}
});
实际上,您希望在第6行使用$(“ul.tabrow li”)
。这是因为$(This)
仅引用当前列表项,而不是所有列表项
$(此)
不是选择器的替代品,它指的是当前活动元素(您正在鼠标悬停的元素)。因此,在第六行使用this
从当前元素中删除活动类,然后立即将其添加回。结果基本上是什么都没有发生
如果不想重复选择器,则可能需要使用更通用的选项,如
$(this).siblings().removeClass('active');
解释“然后它就不能像我想的那样工作了”我不确定,但你可以使用chrome或firebug或类似的东西在$(这)
行中打断它,看看它到底指向什么(参见局部变量下的id属性)。它可能将其视为父元素而不是li。好的,我现在明白了,这是一行选项卡,因此$(“ul.tabrow li”)
从所有选项卡中删除活动类,然后将其添加到悬停的选项卡中,感谢您的帮助