使用forEach添加jQuery onClick处理程序

时间:2017-11-25 18:30:33

标签: 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。

中的链接

1 个答案:

答案 0 :(得分:1)

on没有替换 click处理程序。 添加点击处理程序。

您可能想要说.off("click").on("click", function () { ... })