本文介绍了jQuery if has()选择器做的东西的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<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,而是进行更复杂的更改,但我不能弄明白为什么这总是真的......这是一个错误还是我错过了什么?

What I want to do is not just set some CSS but make more complicated changes but I can't figure out why this always returns true... Is it a bug or what am I missing?

推荐答案

那是因为 has 返回一个jQuery对象,一个对象是JavaScript中的truthy值,你应该使用 length property:

That's because has returns a jQuery object and an object is a truthy value in JavaScript, you should use length property:

if (jQuery('#bad-drifting').has('em').length) {

这篇关于jQuery if has()选择器做的东西的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-10 13:38