2012-09-25 107 views
3

我試過使用stopPropagation(),但沒有運氣。
我有這樣的結構:jQuery DIV click()接管DIV.IMG click()

<div class="logos"> 
</div> 

我有一個點擊綁定到標識,即追加IMG元素中它結束了,如:

<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> 

我要綁定一個click事件的圖像,所以當他們點擊時,他們可以從「標識」div中刪除,我使用.live()來跟蹤這些點擊。
結果是,當我點擊圖片時,「徽標」單擊事件和img點擊事件都被觸發。

$('.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. 
    }); 

由於

+0

你嘗試過將e.stopPropagation();在img函數中? –

+0

是的,我試了兩個函數,並與e.stopPropagation()和e.stopImmediatePropagation() – doterobcn

回答

4

你可以做這樣的事情。如果你正在使用> jQuery 1.4,你應該使用on而不是live。檢查目標,如果它是一個圖像,然後將其刪除。否則,保持它。

http://jsfiddle.net/AprTx/

$('.logos').on('click', function(e) { 
    e.stopPropagation(); 

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

我喜歡這個,試試吧 – doterobcn

+0

作品喜歡魅力,謝謝@mrtsherman – doterobcn

4

在jQuery 1.7中,。對()方法提供用於附接的事件處理程序所需的所有功能。

這是從DOCS,但也可以將您的圖像e.stopPropagation()在點擊傳播給父母之前! :)

jsBin demo

$('.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(); 
}); 
+1

他是如此親密 – mrtsherman

+0

現在試試吧! – doterobcn

+0

@doterobcn編輯我的答案,我錯過了一個小細節。如果我理解得很好,如果有人刪除了想要上傳(撥打)新圖片的圖片? –