2016-11-15 120 views
0

回答以下questionjQuery點擊日曆上動態生成的元素的事件?

var counter = 0; 
$("button").click(function() { 
$("h2").append("<p class='test'>click me " + (++counter) + "</p>") 
}); 

$("h2").on("click", "p.test", function(){ 
alert($(this).text()); 
}); 

我有一個動態生成的日曆,當你點擊,而不是打開一個新的網頁上的單獨日,它交換了當天的活動日曆。這些事件列在一張表中,我希望能夠點擊一行,並觸發一個使用location.assign()的函數。因此,每一行看起來像下面

<tr id="message-7"> 

新的一頁日曆負荷和創造,

<tr id="message-132"> 

點擊不會觸發功能。在另一個問題的例子中,它訪問元素的文本,以使元素具有唯一性,而不是像給我的情況那樣給元素一個唯一的id#。

我以錯誤的方式接近問題嗎?我可以添加一個像我可以參考的"title=132"標籤嗎?

+0

它看起來像我可以只使用'.message'類(或任何類)實現點擊事件,並在事件函數獲取發件人使用'$(event.target)',但我不知道如果我正確理解你的問題 –

回答

1

理想情況下儘量不要使用太多的ID。請使用數據作爲shown here

所以不是

<tr id="message-7"> 

使用

<tr id="1234567" data-message="7"> 

然後在代碼中,你可以解決數據:

var messageVal = $("#1234567").data("message") 

如果你需要添加一個通用的單擊事件,然後您可能需要爲所有適當的TR使用虛擬css類分配:

<tr id="1234567" data-message="7" class="messageRow"> 

,這樣你可以寫

$(".messageRow").on("click", function(event){ 
    event.preventDefault() 
    var messageVal = $(this).data("message") 

這在只有一些TR的將包含可點擊的內容的情況下非常有用 - 只是類不分配給其他人。

+0

非常感謝你,那正是我一直在尋找的。 – Mike

相關問題