首页 > 解决方案 > 更改DOM时jquery .each函数发生冲突

问题描述

有谁知道为什么此功能仅在两种情况下都部分有效(带有 Tampermonkey 扩展)

html:

<div class="container">
  <p>
    <a onclick="alert('item clicked')" class="">Element to auto click</a>
    <a href="myurl/telechargement">Element to open in new tab</a>
  </p>
</div>

版本 1:

setTimeout(function(){
    $('.container a[href*="telechargement"]').each(function() {
         $(this).attr("target", "_blank"); //not working
         console.log(this) // see image bellow
         $(this).prev()[0].click(); //working
    });
}, 1000);

版本 2(几乎相同):

setTimeout(function(){
    $('.container a[href*="telechargement"]').each(function() {
         $(this).attr("target", "_blank"); //working
         console.log(this) // see image bellow (same result)
         $(this).prev().click(); //not working
    });
 }, 1000);

在此处输入图像描述

控制台target="_blank"在两种情况下都返回,但在第一种情况下 DOM 没有改变,所以没有目标属性。为什么它会这样?

它似乎在小提琴中工作,所以我可能在错误的地方寻找https://jsfiddle.net/n71w52hy/2/ 。这可能来自 TamperMonkey 吗?欢迎任何建议。

谢谢臀部。

标签: javascriptjqueryeachtampermonkey

解决方案


推荐阅读