首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery DIV click()接管DIV.IMG click()

jQuery DIV click()接管DIV.IMG click()
EN

Stack Overflow用户
提问于 2012-09-25 08:56:30
回答 2查看 2.4K关注 0票数 3

我尝试过使用stopPropagation(),但没有成功。

我有这样的结构:

代码语言:javascript
复制
<div class="logos">  
</div>

我有一个绑定到徽标的点击,它在里面附加了img元素,结果如下:

代码语言:javascript
复制
<div class="logos">
  <img width="100" height="80" src="/js/fileupload/uploads/Penguins.jpg">  
  <img width="100" height="80" src="/js/fileupload/uploads/Hydrangeas.jpg">
</div>

我希望将单击事件绑定到这些图像,这样当它们被单击时,它们就可以从"logos“div中删除,我使用.live()来跟踪这些单击。

结果是,当我单击一个图像时,“logo”单击事件和img单击事件都会被激发。

代码语言:javascript
复制
    $('.logos img').live('click', function(e){
        var answer = confirm ("Delete image?")
        if (answer){
            $(this).remove();
        }
    });
    $('.logos').click(function(e){
            e.stopPropagation();
            $('.qq-upload-button input').trigger('click'); //File uploader that uploads images and creates the img elements.
    });  

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-25 09:10:36

你可以做这样的事情。如果您使用的是> jQuery 1.4,则应该使用on而不是live。检查目标,如果是镜像,则将其删除。否则就别管它了。

http://jsfiddle.net/AprTx/

代码语言:javascript
复制
$('.logos').on('click', function(e) {
    e.stopPropagation();

    if ($(e.target).is('img')) {
        $(e.target).remove();
    }
    else {
        $(this).append($('<img src="http://placehold.it/300x300" />'));
    }
});​
票数 4
EN

Stack Overflow用户

发布于 2012-09-25 09:10:02

从jQuery 1.7开始,.on()方法提供附加事件处理程序所需的所有功能。

这是来自DOCS,但也将您的e.stopPropagation()放在您的图像上,然后单击传播到父!:)

代码语言:javascript
复制
$('.logos img').on('click', function(e){
        e.stopPropagation();
        var answer = confirm("Delete image?");
        if (answer){
            $(this).remove();
        }
});

$('.logos').click(function(){
     $('.qq-upload-button input').click();
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12574881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档