<分区>
我很难弄清楚这段代码遇到了什么样的问题。此代码采用通过 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 中的当前、最近传入的链接之前。