Jquery如果类具有匹配的ID,则隐藏

时间:2015-07-21 11:07:14

标签: javascript jquery html

我在这里尝试检查一个元素是否与另一个元素中的id具有相同的class,如果这样,则隐藏匹配的id

到目前为止,这是我想出来的,但它似乎没有踢。

JSfiddle



var theid = $('#me li').attr('id');

if ($('#you li').hasClass( theid )) {
  
  $('#me li#'+theid+'').hide();
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<ul id="me">
  <li id="num-0">iam 1</li>
  <li id="num-1">ieam 2 &amp; should be hidden</li>
  <li id="num-2">iam 3</li>
  <li id="num-3">iam 4</li>
  <li id="num-4">ieam 5 &amp; should be hidden</li>
  <li id="num-5">iam 6</li>
</ul>

<ul id="you">
  <li class="num-1">iam killer</li>
  <li class="num-4">iam killer</li>
</ul>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:4)

  1. 使用each()循环遍历li
  2. 中的所有#you元素
  3. hide()id相同的元素,与循环中当前元素的class相同。
  4. &#13;
    &#13;
    $('#you li').each(function() {
      $('#' + $(this).attr('class')).hide();
    });
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <ul id="me">
      <li id="num-0">iam 1</li>
      <li id="num-1">ieam 2</li>
      <li id="num-2">iam 3 &amp; should be hidden</li>
      <li id="num-3">iam 4</li>
      <li id="num-4">ieam 5 &amp; should be hidden</li>
      <li id="num-5">iam 6</li>
    </ul>
    <ul id="you">
      <li class="num-2">iam killer</li>
      <li class="num-4">iam killer</li>
    </ul>
    &#13;
    &#13;
    &#13;

    Demo

答案 1 :(得分:1)

在包含多个元素的jQuery对象上使用.attr()方法时,它只返回第一个元素的属性。您需要遍历每个元素并一次检查一个元素。

但是,您可以在所有.hasClass()元素的集合上使用#you,因为.hasClass()将返回true(如果有的话)集合中的元素具有该类。所以:

var you = $('#you li');

$('#me li').each(function() {
    if (you.hasClass(this.id))
        $(this).hide();
});

请注意,我在变量$('#you li')中保留对you jQuery对象的引用,以便每次在循环中再次选择这些元素。

演示:https://jsfiddle.net/d65sz4js/2/

答案 2 :(得分:0)

试试这个jquery:

$(function() {
    $("#you li").each(function(){
        var theid = $(this).attr('class');
        $('#'+theid).hide();
    });
});

演示:https://jsfiddle.net/nkem9o7o/

答案 3 :(得分:0)

你可以filter #me li,返回他们id作为#you li中的一个类存在的元素,然后隐藏它们。这也适用于多个类:

$('#me li').filter(function() {
   return $('#you').has('.' + this.id).length;
}).hide();

Here's a fiddle