每个如果类包含文本的jQuery remove()

Posted

技术标签:

【中文标题】每个如果类包含文本的jQuery remove()【英文标题】:jQuery remove() for each if class contains text 【发布时间】:2011-08-24 23:50:04 【问题描述】:

如果标题(类名='productnamecolor colors_productname')包含文本“True”,则尝试删除“bnum”类中的内容。

基本上,在下面的示例中,您不应在“True Merchandiser Refrigerator”下看到任何“Burkett Bucks”值,但它仍应出现在所有其他示例中:

<table >
    <tr>
      <td  valign="top"><a class="productnamecolor colors_productname" href=""> Star Griddle</a></td>
    </tr>
    <tr>
      <td  valign="top"><table cellspacing="0" cellpadding="0" >
          <tbody>
            <tr>
              <td  valign="top"><font class="text colors_text rewardpoints"><span id="offers">Special Offers:</span><br>
                <div class="bbucks"><img src="http://bit.ly/ihYMFL" id="bucks"> Earn <span class="bnum">2343</span> Burkett Bucks</div>
                </font></td>
              <td align="right" ></td>
            </tr>
          </tbody>
        </table></td>
    </tr>
    <tr>
      <td  valign="top"><a class="productnamecolor colors_productname" href=""> True Merchandiser Refrigerator</a></td>
    </tr>
    <tr>
      <td  valign="top"><table cellspacing="0" cellpadding="0" >
          <tbody>
            <tr>
              <td  valign="top"><font class="text colors_text rewardpoints"><span id="offers">Special Offers:</span><br>
                <div class="bbucks"><img src="http://bit.ly/ihYMFL" id="bucks"> Earn <span class="bnum">2343</span> Burkett Bucks</div>
                </font></td>
              <td align="right" ></td>
            </tr>
          </tbody>
        </table></td>
    </tr>
    <tr>
      <td  valign="top"><a class="productnamecolor colors_productname" href="">Generic Something</a></td>
    </tr>
    <tr>
      <td  valign="top"><table cellspacing="0" cellpadding="0" >
          <tbody>
            <tr>
              <td  valign="top"><font class="text colors_text rewardpoints"><span id="offers">Special Offers:</span><br>
                <div class="bbucks"><img src="http://bit.ly/ihYMFL" id="bucks"> Earn <span class="bnum">2343</span> Burkett Bucks</div>
                </font></td>
              <td align="right" ></td>
            </tr>
          </tbody>
        </table></td>
    </tr>
    </table>

我遇到的问题是它对所有值都执行此操作,我只想删除每个标题下包含“True”字样的值。所以我假设我的每个人都有问题。

$(document).ready(function()     
    $(".colors_productname:contains('True')").each(function () 
        $('.bnum').remove(); );

);

【问题讨论】:

【参考方案1】:

而不是全局选择器

$('.bnum')

你需要在你的函数中使用每个方法的当前上下文,考虑到基础和目标不在同一个 tr 中,我们需要做一点 Dom 遍历。

$(".colors_productname:contains('True')").each(function () 
    $(this).closest('tr').next('tr').find('.bnum').remove(); );

【讨论】:

这也不起作用,我认为这些都非常有效,不幸的是,“标题”和“bnum”类位于不同的“TR”中......也许这就是我们遇到问题的地方 啊,错过了,html 在我的显示器上变得非常混乱。更新为在删除之前进行正确的 Dom 遍历。【参考方案2】:

不应该是$(this).find('.bnum').remove()或者更短吗:$(".colors_productname:contains('True') .bnum").remove()

【讨论】:

【参考方案3】:

试试这个:

$(document).ready(function() 
    $(".colors_productname:contains('True')").each(function () 
        $(this).find('.bnum').remove(); );
);  

【讨论】:

根本不需要.each()

以上是关于每个如果类包含文本的jQuery remove()的主要内容,如果未能解决你的问题,请参考以下文章

在 JQuery 中获取按钮类

根据每个表格行中的单元格值更改按钮文本 - Jquery

使用类循环遍历每个元素并附加其文本JQUERY

影响所有图像的脚本而不是仅包含某些文本的div中的图像(jQuery)

Jquery&classList

jQuery 如果 div 包含此文本,则替换该部分文本