我在这里尝试检查一个元素是否与另一个元素中的id
具有相同的class
,如果这样,则隐藏匹配的id
。
到目前为止,这是我想出来的,但它似乎没有踢。
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 & should be hidden</li>
<li id="num-2">iam 3</li>
<li id="num-3">iam 4</li>
<li id="num-4">ieam 5 & 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;
答案 0 :(得分:4)
each()
循环遍历li
#you
元素
hide()
与id
相同的元素,与循环中当前元素的class
相同。
$('#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 & should be hidden</li>
<li id="num-3">iam 4</li>
<li id="num-4">ieam 5 & 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;
答案 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对象的引用,以便每次在循环中再次选择这些元素。
答案 2 :(得分:0)
试试这个jquery:
$(function() {
$("#you li").each(function(){
var theid = $(this).attr('class');
$('#'+theid).hide();
});
});
答案 3 :(得分:0)
你可以filter
#me li
,返回他们id
作为#you li
中的一个类存在的元素,然后隐藏它们。这也适用于多个类:
$('#me li').filter(function() {
return $('#you').has('.' + this.id).length;
}).hide();