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

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

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

<table width="300px">
    <tr>
      <td width="100%" valign="top"><a class="productnamecolor colors_productname" href=""> Star Griddle</a></td>
    </tr>
    <tr>
      <td width="100%" valign="top"><table cellspacing="0" cellpadding="0" width="100%">
          <tbody>
            <tr>
              <td width="64%" 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" width="36%"></td>
            </tr>
          </tbody>
        </table></td>
    </tr>
    <tr>
      <td width="100%" valign="top"><a class="productnamecolor colors_productname" href=""> True Merchandiser Refrigerator</a></td>
    </tr>
    <tr>
      <td width="100%" valign="top"><table cellspacing="0" cellpadding="0" width="100%">
          <tbody>
            <tr>
              <td width="64%" 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" width="36%"></td>
            </tr>
          </tbody>
        </table></td>
    </tr>
    <tr>
      <td width="100%" valign="top"><a class="productnamecolor colors_productname" href="">Generic Something</a></td>
    </tr>
    <tr>
      <td width="100%" valign="top"><table cellspacing="0" cellpadding="0" width="100%">
          <tbody>
            <tr>
              <td width="64%" 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" width="36%"></td>
            </tr>
          </tbody>
        </table></td>
    </tr>
    </table>

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

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

});

【问题讨论】:

    标签: jquery if-statement each contains


    【解决方案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()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多