Javascript 向具有通配符ID的元素添加jQuery事件处理程序
我当前在document.ready块中有以下内容:Javascript 向具有通配符ID的元素添加jQuery事件处理程序,javascript,jquery,Javascript,Jquery,我当前在document.ready块中有以下内容: $("[id^=summaryDetailLink_]").each(function(index) { var splitID = this.id.split("_"); this.click(alert('clicked: '+splitID[1])); //toggleDetail(splitID[1]) }); 最后,我想检测何时单击ID为“summaryDetail”的TD,
$("[id^=summaryDetailLink_]").each(function(index) {
var splitID = this.id.split("_");
this.click(alert('clicked: '+splitID[1])); //toggleDetail(splitID[1])
});
最后,我想检测何时单击ID为“summaryDetail”的TD,并使用从TD.ID属性获取的ID启动toggleDetail函数
上面的代码似乎生成了正确的ID(alert popsup),但在页面加载时触发,而不是在我单击元素时触发
所以问题1——为什么它会在页面加载时启动,而不是为单击每个元素创建一个处理程序并等待单击
问题2,在阅读这个问题时,在表上创建一个事件处理程序似乎更明智,而不是通过TD来确定单击了哪个TD元素。我该如何转换代码来实现这一点?我认为您误解了单击处理程序的工作原理:
$(function() {
$("[id^=summaryDetailLink_]").click(function() {
var splitID = $(this).id.split("_");
alert('clicked: '+splitID[1])
});
}
对第一个问题的答复:
$(function() {
$("[id^=summaryDetailLink_]").click(function() {
var splitID = $(this).id.split("_");
alert('clicked: '+splitID[1])
});
}
回答第二个问题,您可以这样做:
$('table#yourtable').on('click', '[id^=summaryDetailLink_]', function(e) {
var splitID = $(this).id.split("_");
alert('clicked: '+splitID[1])
});
在代码中将“$(this)”更改为“this”后,它工作得非常好。谢谢