【问题标题】:Adding an element to the div if not already added via Chrome Extension如果尚未通过 Chrome 扩展添加元素,则将元素添加到 div
【发布时间】:2015-02-08 09:25:52
【问题描述】:

我正在尝试在时间轴上出现的每条推文中包含一个自定义按钮。

var tweets = $(".tweet");
var len = tweets.length;
for(var i=0;i<len;i++){
    if($(tweets[i]).has(".custom-button-class").length){
        console.log("already added");
    }
    else{
        console.log("needs to be added");
        $(d).appendTo(tweets[i]); // d is the element that I am trying to append to every tweet
    }
}

我希望仅当推文已经在页面上并且元素尚未附加到它时才添加元素。 请帮忙,谢谢:)

编辑1:此代码从底部添加元素,如何从顶部添加它们?这样用户就不会看到任何滞后(大多数情况下,用户在刷新时会位于顶部)? 完成
编辑 2:如果我使用 2000 作为刷新计时器,它会在每个 refreshInterval 向一条推文中添加元素。因此,这会延迟向每条推文添加元素的过程。我想同时向所有推文(之前未附加)添加元素。可能吗? 完成
看截图

【问题讨论】:

  • 你可以尝试反转循环,即从 count-1 开始到 0
  • 我确实试过了(就在你发表评论之前)。谢谢:)
  • 我值得投赞成票吗?)
  • 为什么说这里是浪费“带宽”呢?你的元素是否加载了一些无法缓存的外部资源?
  • 我最初的感觉是——它不断加载新的推文,这些推文只有在用户向下滚动时才会加载。但现在看来我的观察是错误的。我会更新问题

标签: javascript jquery html twitter google-chrome-extension


【解决方案1】:

您可以检查按钮是否已添加:

if(!$(tweets[i]).has(".custom-class").length) {
    $(d).clone().prependTo(tweets[i]);
}

【讨论】:

  • 不。不工作。它只是随时将元素添加到页面上的第一条推文之前..
  • 好的,我明白了 - 问题是 - 在我的 for 循环中,在我的函数的一次执行中,只执行了一个值。不是全部。所以,这就是为什么......一次将一个元素添加到一条推文中。有什么线索,为什么?怎么做才对? @雪貂
  • 哇!有效。正是我想要的! @Ferret,请更新您的上述答案,以便我将其标记为正确答案:)
猜你喜欢
  • 1970-01-01
  • 2019-11-29
  • 2018-07-17
  • 2012-09-22
  • 1970-01-01
  • 2018-02-25
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多