【问题标题】:javascript on page load check if a span (under <tr>) with a specific class exist, if does not exist remove the entire <tr>页面加载时的 javascript 检查是否存在具有特定类的跨度(在 <tr> 下),如果不存在则删除整个 <tr>
【发布时间】:2015-04-24 12:02:36
【问题描述】:

我正在尝试为我最喜欢的目录列表站点创建自己的greasemonkey 脚本:)

事情并不是它列出的所有内容都对我有益,我检查了网站代码,看起来,每个条目都在

现在,看起来,我只对具有这种格式的那些感兴趣:

<tr class="project-description">
<td colspan="6">
    <div class="project-desc-inner">
        <div class="project-synopsis">
            <p class="trunk8">This is an entry</p>
        </div>
        <div class="project-verification">
            <span class="verfied-badge"> <~~~~~~~~~~ THIS SPAN
                <span class="currency-symbol">$</span>
                <span class="icon-tick"></span>
                Verified
            </span>
        </div>
        <div class="project-actions">
            <a href="#">
                <button class="btn">LOL</button>
            </a>
        </div>
    </div>
</td>
</tr>

如您所见,&lt;span class="verfied-badge"&gt; 的存在会触发它。

我也希望 javascript 在页面加载后处理这个,因为网站也通过 javascript 填充表格。

我知道我的问题还没有解决,但是如果有人能提供一个可以引导我的例子,那就足够了。

非常感谢!

【问题讨论】:

  • 下次要注意正确的语言,尤其是在标题中,因为 Java ≠ Javascript 以任何方式或形式出现。除非您在字符串 Javascript 中对 Java 进行字符串匹配。在这种情况下,你会得到一场比赛。 ;)
  • @RobertKoritnik 非常感谢你,现在我知道了 :)

标签: javascript html browser directory greasemonkey


【解决方案1】:

过滤的选择器只调用一次.remove

由于TR 中还有其他与问题无关的span 元素,因此无法编写纯CSS 过滤器选择器字符串(因此我们可以使用.has)来充分过滤元素。但我们不是单独删除每个表格行,而是先过滤它们,然后一次全部删除。

$("tr.project-description").filter(function() {
    return !$("span.verfied-badge", this).length;
}).remove();

【讨论】:

    【解决方案2】:
    $(document).ready(function(){
        $("tr.project-details").each(function(){
           var self = $(this);
           if(self.find("span.verfied-badge").length==0)
               self.remove();
        });
    
    });
    

    【讨论】:

    • +1,但是对此有一个优化:如果您将匹配的 TR 放在一个单独的 jQuery 集中,并在您将它们全部收集到迭代函数中之后调用该集上的单个 remove .
    • @void 如果我只对&lt;tr class="project-details"&gt; 感兴趣,我应该将$("tr").each(function(){ 替换为$("tr.project-details").each(function(){ 吗?谢谢!
    • 是的,你可以这样做。很高兴它有帮助,请考虑投票并将其标记为正确的 asnwer。
    • @void 你能告诉我self.remove(); 的具体用途吗,它似乎有效,但我认为它不是针对正确的&lt;tr&gt;self.remove(); 我意识到它删除了所有&lt;tr&gt;即使是我想要的:(
    • @RobertKoritnik 我想这就是我需要的,你能举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2018-05-03
    • 1970-01-01
    • 2012-05-08
    • 2014-08-06
    • 1970-01-01
    • 2017-07-06
    相关资源
    最近更新 更多