javascript - 使用 forEach 添加 jQuery onClick 处理程序

标签 javascript jquery

<分区>

我很难弄清楚这段代码遇到了什么样的问题。此代码采用通过 Ajax 收集的一组链接。每次用户搜索新术语时,linksArr 都会填充新链接,链接按钮将打开新的链接集。

populateLinks = function (linksArr){
    // linksArr contains links from Ajax search
    linksArr.forEach(function(link,index){
        // Add on click handler to each link button
        $('.linkButton' + [index]).on("click", function(){
            window.open(link, "_blank");
        })
    });
};

第一组链接工作得很好。问题出现在将任何后续链接数组传递给函数之后。当一个新的链接数组被传递到函数中时,一旦你点击一个链接按钮,window.open() 将引用并打开传递给 linksArr 的第一个链接数组,然后立即 < strong>之后,它将打开最近传递给函数的当前链接。

我很困惑可能是什么问题。我认为这可能是由于使用了 forEach 函数导致的闭包问题,但几个小时后我无法弄清楚。

这看起来是一个看似简单的问题,也许我忽略了什么。我很想了解关于 window.open 打开的链接究竟发生了什么,以及为什么之前传递的先前链接(当新链接填充它时它们甚至不在 linksArr 中)被打开 linksArr 中的当前、最近传入的链接之前。

最佳答案

on 不会替换 click 处理程序。它添加点击处理程序。

您可能想改用 .off("click").on("click", function () { ... })

关于javascript - 使用 forEach 添加 jQuery onClick 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47489282/

相关文章:

javascript - 根据定义的类在 jQuery 中排序

javascript - 价格变化时更新 strip 数据量

jquery - 悬停时自动暂停或播放 HTML5 视频

jquery - TinyMCE - 使用 jQuery 进行多个配置/初始化

javascript - Jquery 数据表从按钮单击获取行 ID

javascript - 如何在javascript中停止无限动画

javascript - 以编程方式创建 SAPUI5 应用程序?

javascript - 从页面重定向中排除 id (jquery)

javascript - 在 jquery ajax 中可以设置的最大超时是多少?

jquery - 如何使用addClass和removeClass控制JQuery的速度?