2014-04-25 26 views
0

我在做什麼是這樣的:如何通過onclick函數傳遞不同的變量?

$(document).on("click", "#deleteMe", function(){ 

    var id = $(this).data("id"); 
    console.log(id); 

    // function to delete event by id goes here 
}); 

我刪除HTML看起來像這樣:

<div id="deleteMe" data-id="">Delete</div> 

值的數據-ID是通過不同的函數給出這樣一旦頁面有許多事件,上面的data-id字段在模態加載時有90,91,92等數字。因此,例如:

<div id="deleteMe" data-id="90">Delete</div> 
<div id="deleteMe" data-id="91">Delete</div> 
<div id="deleteMe" data-id="92">Delete</div> 

第一次點擊'刪除'時,這個功能完全正常 - 事件從數據庫中刪除就像我想要的那樣。不幸的是,每次我點擊一個不同的事件並再次點擊'刪除'時,刪除失敗,並且console.log顯示它正試圖刪除我刪除的FIRST元素的前一個ID。

這就像我第一次使用onclick函數,它綁定了我使用的原始ID,並且每次點擊從此開始保持相同的ID而不是傳遞新的數據ID。我如何解決這個問題?

Ex。

只要點擊事件90,點擊刪除。活動已成功刪除! (Console.log =「試圖刪除ID#90」) 只需點擊事件91,點擊刪除。什麼都沒發生。 (Console.log =「試圖刪除ID#90」

在點擊刪除之前檢查元素時,正確的數據ID在那裏 - 只是點擊「刪除」它不抓取新數據我想要刪除的下一個事件中的-id值

+4

可能有一些與他們都具有相同的ID。使用班級來識別常見元素 - '

Delete
' – BadFeelingAboutThis

+0

只是嘗試將其更改爲班級,沒有任何區別 - 儘管我確實記得有人告訴我說ids在頁面上應該是唯一的,所以我會這樣做從現在開始。不幸的是,它不能解決問題,但! – cg22

+0

你是否改變了選擇器? '$(document).on(「click」,「.deleteMe」,function(){' – BadFeelingAboutThis

回答

1

對於初學者來說,如果你打算將多個元素標記爲deleteMe,你應該使用一個類而不是id,ID應該是唯一的。你有data-id應該是ID的

假設你改變了要素:

<div class="deleteMe" data-id="90">Delete</div> 

要刪除被點擊,你可以做到這一點的元素:

$('.deleteMe').click(function() { 
    console.log('Deleting ID:', $(this).attr('data-id')); 
    $(this).remove(); 
}); 

- 編輯 -

由於人提到,我錯過了事件代理點,你可以這樣做確保與deleteMe類創建的所有未來的元素也響應click事件:

$(document).on('click', '.deleteMe', function() { 
    console.log('Deleting ID:', $(this).attr('data-id')); 
    $(this).remove(); 
}); 
+1

你開始如此出色,但錯過了事件委派的要點... –

+0

他們爲什麼要刪除文件中的所有點擊?.click()和文檔。 – BadFeelingAboutThis

+0

我只是不確定他要做什麼,因爲他的例子使用'$(document).on('click'等)' – jshanley

0

我只是改變這個功能解決了這個:

var id = $(this).data("id"); 

到:

var id = $(this).attr("data-id"); 

我不認爲有一個區別,但雙重和三重檢查它證實了這兩個功能不同的操作。

找到有關DOM這裏就可以了一些有趣的信息:http://www.peterbe.com/plog/data-and-attr-in-jquery

+0

這正是我建議的;)謝謝你的鏈接,雖然,很好的信息。 – jshanley

+0

哦,我沒有看到您的編輯!我現在看到了 - 謝謝! – cg22

相關問題