This question already has answers here:
Event binding on dynamically created elements?
(23个答案)
2年前关闭。
我很难弄清楚这段代码遇到了什么样的问题。此代码采用通过Ajax收集的一系列链接。每次用户搜索新术语时,linksArr都会填充新的链接,并且链接按钮将打开新的链接集。
第一组链接可以正常工作。在将任何后续的链接数组传递到函数之后,就会出现问题。当将新的链接数组传递给函数时,一旦单击链接按钮,window.open()将引用并打开传递给linksArr的第一个链接数组,然后紧接着打开当前数组。最近传递到函数中的链接。
我很困惑可能是什么问题。我相信这可能是由于使用了forEach函数而导致的关闭问题,但是几个小时后我无法弄清楚。
这似乎是一个看似简单的问题,也许我已经忽略了一些东西。我很想了解关于window.open打开的链接到底发生了什么,以及为什么早先传递的先前链接(当新链接填充时它们甚至不在linksArr中)在打开之前被打开了。当前,最近在linksArr中的链接中传递。
(23个答案)
2年前关闭。
我很难弄清楚这段代码遇到了什么样的问题。此代码采用通过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的第一个链接数组,然后紧接着打开当前数组。最近传递到函数中的链接。
我很困惑可能是什么问题。我相信这可能是由于使用了forEach函数而导致的关闭问题,但是几个小时后我无法弄清楚。
这似乎是一个看似简单的问题,也许我已经忽略了一些东西。我很想了解关于window.open打开的链接到底发生了什么,以及为什么早先传递的先前链接(当新链接填充时它们甚至不在linksArr中)在打开之前被打开了。当前,最近在linksArr中的链接中传递。
最佳答案
on
不会替换click
处理程序。它添加了一个单击处理程序。
您可能要改为说.off("click").on("click", function () { ... })
。
09-25 17:53