2016-11-15 100 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

相关问题