假设示例元素:
<a href="..." rel="...">...
<a href="..." rel="..." target="...">...
如何仅匹配第一个元素?我想告诉jQuery仅匹配具有<a>
和href
属性的rel
元素,而没有其他属性。 :not()
要求我提及要排除的特定属性,但是未知属性呢?
答案 0 :(得分:4)
使用filter()并检查属性长度。请注意,添加任何类似类或数据属性的内容将意味着您需要对此进行修改
$('a[href][rel]').filter(function(){
return this.attributes.length === 2;
}).css('color','red')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" rel="foo" target="_blank"> Has target</a>
<a href="#" rel="foo" > No target</a>
<a href="#" > No rel </a>
答案 1 :(得分:2)
您可以为此使用not()和first()函数来选择集合中的第一个元素并过滤掉不需要的元素。
示例:
$("a[href][rel]").not("[target]").first();
为了排除包含其他未知属性的项目,应按照其他答案的建议使用过滤器。
但这不是一个好的解决方案,最好将一个类添加到需要选择的元素中,或者将它们放在另一个div中。
答案 2 :(得分:0)
使用带有测试条件的.filter()
来检查元素只有属性长度
$('a[href][rel]').filter(function() {
return this.attributes.length == 2
}).addClass('a');
.a {
background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="..." rel="...">...</a>
<a href="..." rel="..." target="...">...</a>
答案 3 :(得分:0)
您可以使用@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position) {
if(position == selectedPos){
holder.imageViewCheck.setVisibility(View.VISIBLE);
} else {
holder.imageViewCheck.setVisibility(View.INVISIBLE);
}
}
并进一步检查this.hasAttribute
以确认this.attributes.length === 2
元素仅具有两个属性:
<a>
$('a').each(function(){
if(this.attributes.length == 2 && this.hasAttribute("href") && this.hasAttribute("rel")){
$(this).addClass('selected');
}
});
.selected{
color: green;
}