对于包含带文本范围的每个li列表,请从该li中删除另一个范围

时间:2015-02-13 09:31:24

标签: javascript jquery each

我有一个项目列表。 在每个列表项中,我都有跨度。 我想检查一个span是否包含一个字符串(在这种情况下是:" Account"),仅从该List项中删除另一个span。我按类选择项目,而不是ID。

我试过这段代码:

$("ul").find('li .productRelatedToAdditional:contains("Account")').each(function(){
    if ($(".productRelatedToAdditional:contains('Account')").length > 0) {
       $(".productRelatedToAdditional").remove();
       $(".productRelatedTo").remove(); 
    }
});

但它不起作用。它正在从所有List项中删除元素。 所以我想删除Class" productRelatedTo"和元素" productRelatedToAdditional"只能从列表中的项目所在的范围" productRelatedToAdditional"包含单词" Account"

非常感谢

3 个答案:

答案 0 :(得分:1)

$(document).ready(function(){
    $("li .productRelatedToAdditional:contains('Account')").each(function(){

    $(this).siblings(".productRelatedToAdditional, .productRelatedTo").remove(); 
});
});

http://jsfiddle.net/h9wj6bx7/2/

答案 1 :(得分:1)

试试这个:找到匹配的li的父productRelatedToAdditional,然后找到productRelatedTo并将其删除。

$("ul").find('li .productRelatedToAdditional:contains("Account")').each(function(){
       var $parentLi = $(this).closest('li');
       $(this).remove();
       $parentLi.find(".productRelatedTo").remove();
});

答案 2 :(得分:1)

另见工作代码段

(function($) {
  $('li').each(function() {
    var string = $(this).find('.productRelatedToAdditional').html();
    console.log(string);
    if (string.toLowerCase().indexOf("active") >= 0) {
      $(this).find('.productRelatedTo').remove();
      $(this).find('.productRelatedToAdditional').remove();
    }
  });
})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>

<body>
  <ul>
    <li>
      <span class="productRelatedTo">hello1</span>
      <span class="productRelatedToAdditional">active</span>
    </li>
    <li>
      <span class="productRelatedTo">hello2</span>
      <span class="productRelatedToAdditional"></span>
    </li>
    <li>
      <span class="productRelatedTo">hello3</span>
      <span class="productRelatedToAdditional">aCtiVe</span>
    </li>
    <li>
      <span class="productRelatedTo">hello4</span>
      <span class="productRelatedToAdditional"></span>
    </li>
  </ul>
</body>

</html>

这应该做的工作:

$('li').each(function(){
    var string = $(this).children('.productRelatedToAdditional').html();
    if (string.toLowerCase().indexOf("active") >= 0){
        $(this).children('.productRelatedTo').remove();
        $(this).children('.productRelatedToAdditional').remove();
    }
});

问候timotheus