Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向具有通配符ID的元素添加jQuery事件处理程序_Javascript_Jquery - Fatal编程技术网

Javascript 向具有通配符ID的元素添加jQuery事件处理程序

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,

我当前在document.ready块中有以下内容:

        $("[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”后,它工作得非常好。谢谢