Javascript 不包含子项的jQuery选择器
我没有看到一个问题是这样的,所以这里是: 假设我有这个html结构:Javascript 不包含子项的jQuery选择器,javascript,jquery,html,Javascript,Jquery,Html,我没有看到一个问题是这样的,所以这里是: 假设我有这个html结构: <div class="button"> <div class="text"> Button </div> </div> 我想选择.button元素,但不选择.btext元素。意思是,我想做一些像 $.button,该按钮不包括.btext。我想将其用于.hover匹配,但我不想在文本上悬停以触发事件 有什么方法可以做到这一点,还是html不可能
<div class="button">
<div class="text">
Button
</div>
</div>
我想选择.button元素,但不选择.btext元素。意思是,我想做一些像
$.button,该按钮不包括.btext。我想将其用于.hover匹配,但我不想在文本上悬停以触发事件
有什么方法可以做到这一点,还是html不可能做到这一点?当悬停事件触发时,它将返回元素,以便您可以在回调中找到它
$('button').hover(function(e){
if (e.target == $('.text')){
return false;
}
});
编辑:
@阿尔尼塔克是正确的,这应该是正确的
if ($(e.target).hasClass('text'))
您应该检查事件目标元素。检查e.target后,只需执行必要的操作。例如,它可以如下所示:
$('.button').mouseover(function(e) {
$(this).toggleClass('hover', !$(e.target).hasClass('text'));
});
演示:如果您不希望事件从子级冒泡到父级,并且您正在使用jQuery,则可以在子级上使用event.stopPropagation,如下所示:
$(".text").hover(function(e){
e.stopPropagation();
});
你在找滑鼠活动吗?似乎这是正确的方法,而不是悬停。@zhiayang:.b文本该类在示例HTML结构中不存在。IMHO,如果您希望这两个元素的行为不同,它们应该是同级,而不是父级和子级。这不应该起作用-您不能将一个元素与jQuery对象进行比较。