Javascript jquery选择单个标记类onclick
看起来有点琐碎,但我很难解决它,我有一个jquery函数来选择单击时标记的类,但问题是它也会按结构顺序选择单击的标记下面的所有其他标记,因为我只需要第一个标记 例如,如果我有Javascript jquery选择单个标记类onclick,javascript,jquery,Javascript,Jquery,看起来有点琐碎,但我很难解决它,我有一个jquery函数来选择单击时标记的类,但问题是它也会按结构顺序选择单击的标记下面的所有其他标记,因为我只需要第一个标记 例如,如果我有 <div class="1"> <div class="2"> <div class="3"> <p class="4">Hello World</p> </div> </div> <
<div class="1">
<div class="2">
<div class="3">
<p class="4">Hello World</p>
</div>
</div>
</div>
我知道问题正在发生,因为从技术上讲,我正在单击所有标记,以便它继续循环,但在选择第一个类后,我仍然需要一种方法来打破它,或者更好的方法是,是否有一种方法可以仅选择最顶部的对象,只需将返回添加到函数,如下所示:
$("*").dblclick(function(){
if(!$(this).hasClass("") && !$(this).hasClass("main")){
alert($(this).attr('class'));
return false;
}
});
我会将事件传递给click函数,在完成逻辑后,使用event.stopPropagation()。这可以防止事件冒泡到父元素
$("*").dblclick(function(event){
if(!$(this).hasClass("") && !$(this).hasClass("main")){
alert($(this).attr('class'));
}
event.stopPropagation();
});
运行此示例并查看您的控制台
$(“body>div”).dblclick(function(){
log($(this.attr('class'));
});代码>
你好,世界
您应该了解事件冒泡
和事件传播
以下是实现您所需功能的函数:
$("*").dblclick(function(e){
if(!$(this).hasClass("") && !$(this).hasClass("main")){
alert($(this).attr('class'));
e.stopPropagation();
}
});
下面是一个工作示例:
尽管将事件附加到页面上的所有标记上并不是一个好的解决方案。更好的解决方案是为应该有事件侦听的元素添加例如id
或clickable class属性
下面是另一个采用更好方法的工作示例:
下面是另一个使用jquery禁用冒泡的工作示例:Small Casereturn false代码>老兄,谢谢你的救命恩人这么小的问题,但花了我一天的时间。我可以问你为什么选择所有的课程吗?让我根据给定的逻辑发布一个更有效的答案示例,除非htis只是出于演示原因。它不允许我发布答案,只允许通过类main进行选择,其余的则不需要示例:$(“*”).not(“.main”).dbclick(function(){alert($(this.class());});使用event.stopPropagation()
或返回false代码>从事件句柄只需阅读事件冒泡
和事件捕获
$(this).hasClass(“”
不需要这也是一个很好的解决方案。我会回答这一点。
$("*").dblclick(function(e){
if(!$(this).hasClass("") && !$(this).hasClass("main")){
alert($(this).attr('class'));
e.stopPropagation();
}
});