<ul id="bad-drifting">
<li>text</li>
</ul>
jQuery(document).ready(function() {
if (jQuery('#bad-drifting').has('em')) {
jQuery('#bad-drifting').css({'color': 'red'});
jQuery('#bad-drifting').css({'font-weight': 'bold'});
}
});
jQuery(document).ready(function() {
if (jQuery('#bad-drifting li:has(em)')) { // .has('em')
jQuery('#bad-drifting').css({'color': 'red'});
jQuery('#bad-drifting').css({'font-weight': 'bold'});
}
});
我想要做的不只是设置一些CSS,而是进行更复杂的更改,但我无法弄清楚为什么这总是会返回真实...这是一个错误还是我错过了什么?
答案 0 :(得分:5)
那是因为has
返回一个jQuery对象而一个对象是JavaScript中的真值,你应该使用length
属性:
if (jQuery('#bad-drifting').has('em').length) {
答案 1 :(得分:1)
您需要检查length
,因为jQuery('#bad-drifting li:has(em)')
会返回一个始终真实的jQuery对象。
if (jQuery('#bad-drifting li:has(em)').length) { // .has('em')
答案 2 :(得分:0)
if (jQuery('#bad-drifting').has('em')[0]) { // do Stuff
答案 3 :(得分:0)
我最终这样做了:
if (jQuery('#bad-drifting em').length > 0) {
console.log('we have some errors');
}
答案 4 :(得分:0)
检查jQuery“集合”的长度:
if (jQuery('#bad-drifting li:has(em)').length > 0) { // There is at least one element
否则它将永远是真的,因为jQuery返回的总是 truthy 。