javascript - 将 jQuery 事件处理程序添加到具有通配符 ID 的元素

标签 javascript jquery

我目前在 document.ready block 中有以下内容:

        $("[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(弹出警报),但在页面加载时触发,而不是在我单击元素时触发。

那么问题 1 - 为什么它在页面加载时触发,而不是创建一个处理程序来单击每个元素并等待该单击?

问题 2,在阅读此问题时,似乎更明智的做法是在表上创建单个事件处理程序,而不是 TD,然后确定单击了哪个 TD 元素。我如何转换代码来做到这一点?

最佳答案

第一个问题的答案:

$(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])
});

关于javascript - 将 jQuery 事件处理程序添加到具有通配符 ID 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12369084/

相关文章:

Javascript 函数不随 html onclick 触发

用于共享脚本和开发的 Javascript 工具/网站

jquery - 查询同位素过滤器添加选定的CSS

javascript - 如何分离和重新附加元素

javascript - 使 slider 不超过视口(viewport)的高度

javascript - Bootstrap popover 仅适用于悬停

javascript - 如何在 angularjs 中的单选按钮中应用自动保存概念?

javascript - Web Workers - JSON 的可传输对象

jquery - div 内出现意外的动画滚动顶部行为

Javascript:两个值之间的百分比差异