Javascript 如何在jQuery中防止单击触发多个单击处理程序调用

Javascript 如何在jQuery中防止单击触发多个单击处理程序调用,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我使用jQuery来创建一个列表和一个div元素click。HTML代码是- <ul class="list-group"> <li class="list-group-item"> <div> <div> Anything <img id="image_click" src="http://www.neatimage.com/im/lin_logo.gif"&g

我使用jQuery来创建一个列表和一个div元素click。HTML代码是-

<ul class="list-group">
    <li class="list-group-item">
        <div>
            <div>
                Anything <img id="image_click" src="http://www.neatimage.com/im/lin_logo.gif">
            </div>
            <div>
                More thing
            </div>
        </div>
    </li>
    <li class="list-group-item">Documents</li>        
    <li class="list-group-item">Music</li>
    <li class="list-group-item">Videos</li>
</ul>
当我点击一个li项目时,只有列表的发出警报。 但如果我点击了image,那么image和list会被提醒

我想要的是,如果有人点击li元素,列表的应该被提醒,但是如果他点击图像,只有图像的应该被提醒,列表的不应该被提醒。

这是因为

这是因为,所以你打电话来阻止它

使用;:停止冒泡事件

 $("#image_click").click(function(e)
    {
       e.stopPropagation();
        alert("for image");
    });
使用;:停止冒泡事件

 $("#image_click").click(function(e)
    {
       e.stopPropagation();
        alert("for image");
    });

或者您可以尝试以下代码:

$(".list-group-item").click(function (e) {
    if(this==e.target)
         alert("for list");
});  

我想这可能会对您有所帮助。

或者您可以尝试以下代码:

$(".list-group-item").click(function (e) {
    if(this==e.target)
         alert("for list");
});  

我认为这可能会对您有所帮助。

如果您不想从任何只写
的操作中得到任何操作,请返回false
。这将防止多次触发您的功能代码

 $(".list-group-item").click(function(){
       return false;
    });

$("#image_click").click(function(){
     alert("for image");
});

如果您不想从任何只写
的操作中得到任何操作,则返回false
。这将防止多次触发您的功能代码

 $(".list-group-item").click(function(){
       return false;
    });

$("#image_click").click(function(){
     alert("for image");
});

停止传播不是一个好主意吗?难道没有更好的方法来处理这件事吗@crazymatt您可以随时检查单击是否发生在特定元素中,然后选择不执行anything@crazymatt比如——或者更广义地说,停止传播不是一个好主意吗?难道没有更好的方法来处理这件事吗@crazymatt您可以随时检查单击是否发生在特定元素中,然后选择不执行anything@crazymatt比如-,或者更广义的是Fiddle-Link,这里是Fiddle-Link,读这篇文章,读这篇文章