关于动态生成的日历元素的jQuery click事件?

时间:2016-11-15 18:12:29

标签: javascript jquery calendar jquery-selectors

以下question的答案,

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"标签吗?

1 个答案:

答案 0 :(得分: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包含可点击内容的情况很有用 - 只是不要将该类分配给其他人。