2015-07-21 34 views
0

這是一個相當奇怪或簡單的錯誤。但它正在做我的頭大聲笑。下面的代碼是針對2 <img>元素的點擊事件處理程序。您點擊一個<img>元素歸類爲「撤消」 - 這應該刪除被單擊的<img>,並且該元素同時在其旁邊直接分類爲「bin」。我設法去掉其中一個,但不是兩個。任何人都可以幫忙嗎? 謝謝 沃爾特jquery:單擊要移除的事件()圖像元素單擊和相鄰圖像元素

JS:

$('ul').on('click','.undo',function(e) { 
    $(this).remove(); 
    $(this).prev().remove(); 

HTML:

<img src="images/bin.png" align="right" class="bin"> 
<img src="images/undo.png" align="right" class="undo"> 

回答

0

一旦你調用$(this).remove();,該元素從DOM移除,其後$(this).prev()找不到任何元素,因爲贏了不是以前的兄弟姐妹爲脫離元素

$('ul').on('click', '.undo', function (e) { 
    $(this).prev().addBack().remove(); 

或者

$('ul').on('click', '.undo', function (e) { 
    $(this).prev().remove(); 
    $(this).remove(); 
+0

這就是我對自己的看法。我嘗試了你的建議但沒有用。感謝您的意見。 – Walter

+0

@Walter請參閱https://jsfiddle.net/arunpjohny/qxgd7ut8/1/ - 您是否可以在小提琴中重現問題 –

+0

感謝Johny,現在全部排序。我可以確認這是因爲觸發了另一個點擊事件干擾的冒泡效應。 – Walter

0

交換去除過程,而不是如下:

$('ul').on('click','.undo',function(e) { 
    $(this).prev().remove(); 
    $(this).remove(); 
}); 

DEMO

什麼,你在這裏做的是試圖去除previous元素 一旦current元素已被刪除,並且jquery將不會是 能夠找到this元素一旦刪除,以刪除其元素previous 元素。因此,請先刪除其previous元素,然後刪除 元素current

+0

我曾嘗試交換,但沒有任何反應。 元素都保留在屏幕上。這對我來說沒有任何意義 – Walter

+0

你嘗試了** [DEMO](https://jsfiddle.net/Guruprasad_Rao/k20kL4r5/)**。如果這在您的系統中不適用於您,那麼您可能需要複製整段代碼,以便我們可以正確理解問題! –

0

我玩了我的其他代碼,發現問題在那裏。問題出現在冒泡效果中,並且這些項目是在通過DOM加載的頁面之後添加的。

感謝您的關注 - 我需要去分析我的代碼的其他位導致這不起作用。

相關問題