2011-06-17 78 views
4

我已經成功地使用了函數,但從未用過if-statement。我的下面的代碼似乎並沒有工作,當它應該。我基本上說,如果H1包含單詞「真」,做一些事情,如果不做別的。目前它只顯示代碼的第一位,無論在H1中是什麼..它從不顯示else部分。jQuery if H1:contains a word do something

<H1>This h1 contains the word Star</H1> 

if ($("H1:contains('True')")) { 
    var test= "<div>IT DID CONTAIN THE WORD TRUE!</div>"; 
    $('h1').append(test); 

} else { 
    var test= "<div>IT DID <b>NOT</b> CONTAIN THE WORD TRUE!</div>"; 
    $('h1').append(test);      
} 
+0

可能重複的[如果包含某些文本,然後運行jquery](http://stackoverflow.com/questions/6309870/if-contains-certain-text-then-run-jquery) –

回答

10

您需要檢查結果集合的length屬性:

if ($("H1:contains('True')").length) { 
    ... 

由於$("H1:contains('True')")會返回一個對象和對象總是評估爲truthy。

+0

lol duh,非常感謝你我一直在看代碼長= p – ToddN

1

$("H1:contains('True')")是一個選擇器。它返回一個jQuery object,而不是一個布爾值。要檢查選擇的任何對象,check the length property

if ($("H1:contains('True')").length) { 
    // stuff... 
} 
0

試試這個

if ($("H1:contains('True')").length > 0) { 
    var test= "<div>IT DID CONTAIN THE WORD TRUE!</div>"; 
    $('h1').append(test);      
} else { 
    var test= "<div>IT DID <b>NOT</b> CONTAIN THE WORD TRUE!</div>"; 
    $('h1').append(test);      
} 
+0

測試將是'> 0'或'> = 1'。 –

+0

更正!,thanx – Dave

0

的問題是,$("H1:contains('True')")總是返回true因爲它始終是一個對象。你真正想檢查的是它是否包含元素。

if ($("H1:contains('True')").length) { 

現在它會返回else部分。

注意:我認爲:contains區分大小寫。

相關問題