我对jQuery和javascript一般都很陌生,我希望只返回定义了类的DOM元素。例如:
<div id="myObject">
<h2>hello world</h2>
<div class="foo">bar</div>
<div class="bar">foo</div>
<div></div><a href="http://google.com"></a>
</div>
我想知道是否存在jQuery函数或者我可以传递给$(#myObject).find(...)
的聪明搜索参数,它只会返回.foo
和.bar
,因为这些是唯一的两个定义了类的DOM元素。为了概括,是否也可以搜索任何属性的存在?
似乎我可以使用更复杂的函数调用字符串来完成此操作,例如
var toReturn = [];
var descendants = $('#myObject').find('*');
$.map(descendants, function (element, index) {
if(element.getAttribute('class') != undefined){
toReturn.push(element);
}
});
但如果有更简单的东西,了解它会有所帮助。
答案 0 :(得分:3)
使用$('#myObject [class]:not([class=""])')
。它将选择已定义类的#myObject
的所有后代,并且它将排除已删除类的元素。 (感谢@TravisJ的not
语法!)
<强>段:强>
$('.byebye').removeClass('byebye');
$('#myObject [class]:not([class=""])').addClass('selected');
&#13;
.selected {
color: green;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myObject">
<h2>hello world</h2>
<div class="foo">bar</div>
<div class="bar">foo</div>
<div class="byebye">
class removed
</div>
<div>
no class here
</div>
<a href="http://google.com">none here either</a>
</div>
&#13;