2013-04-29 25 views
2
<ul id="bad-drifting"> 
    <li>text</li> 
</ul> 

http://jsfiddle.net/wZ8MC/2/jQuery的,如果有()選擇做的東西

jQuery(document).ready(function() { 
    if (jQuery('#bad-drifting').has('em')) { 
     jQuery('#bad-drifting').css({'color': 'red'}); 
     jQuery('#bad-drifting').css({'font-weight': 'bold'}); 
    } 
}); 

http://jsfiddle.net/Xzn6y/

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,但要更復雜的變化是什麼,但我可以」不知道爲什麼這總是返回true ...這是一個錯誤,或者我錯過了什麼?

回答

5

這是因爲has返回一個jQuery對象和對象是一個JavaScript truthy值,你應該使用length屬性:

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

你會認爲一個名爲has()的函數會返回true或false ..不過謝謝! – OZZIE 2013-04-29 11:33:32

+0

是的,它可以被理解爲whichHas。 – undefined 2016-12-22 13:25:23

+0

。.has()函數與.children('em')將是相同的點是什麼 – OZZIE 2017-12-21 23:39:35

1

您需要檢查length因爲jQuery('#bad-drifting li:has(em)')返回一個jQuery對象,這將是永遠truthy。

if (jQuery('#bad-drifting li:has(em)').length) { // .has('em') 
0
if (jQuery('#bad-drifting').has('em')[0]) { // do Stuff 
0

我落得這樣做是這樣的:

if (jQuery('#bad-drifting em').length > 0) { 
    console.log('we have some errors'); 
} 
0

檢查jQuery的 「收藏」 的長度:

if (jQuery('#bad-drifting li:has(em)').length > 0) { // There is at least one element 

否則它永遠是真實的,因爲什麼jQuery返回始終是truthy

相關問題