看起来有点琐碎,但很难解决,我有一个jquery函数来选择标签的类,但是问题是,它选择标签下面的每个标签也是按结构顺序点击的,因为我只想要第一个。
例如,如果我有
<div class="1">
<div class="2">
<div class="3">
<p class="4">Hello World</p>
</div>
</div>
</div>
我点击了(p)标签,上面写着你好世界,我会收到一个警告,上面写着4,3,然后2,1,但就像我说的,我只想要第一个女巫在这个例子中是4。
这是我的jquery代码
$("*").dblclick(function(){
if(!$(this).hasClass("") && !$(this).hasClass("main")){
alert($(this).attr('class'));
}
});
我知道这个问题正在发生,因为从技术上讲,我是在点击所有的标签,这样它就可以继续循环,但是在第一个类被选中之后,我仍然需要一种打破它的方法,或者更好的方法是只选择最上面的对象。
发布于 2015-10-16 17:04:25
只需向函数添加返回,如下所示:
$("*").dblclick(function(){
if(!$(this).hasClass("") && !$(this).hasClass("main")){
alert($(this).attr('class'));
return false;
}
});
发布于 2015-10-16 17:05:56
我会将事件传递给您的click函数,在您完成您的逻辑之后,使用event.stopPropagation()。这样可以防止事件冒泡到父元素。
$("*").dblclick(function(event){
if(!$(this).hasClass("") && !$(this).hasClass("main")){
alert($(this).attr('class'));
}
event.stopPropagation();
});
发布于 2015-10-16 17:10:50
运行此示例并查看您的控制台。
$("body > div").dblclick(function(){
console.log($(this).attr('class'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="1">
<div class="2">
<div class="3">
<p class="4">Hello World</p>
</div>
</div>
</div>
https://stackoverflow.com/questions/33175810
复制相似问题