2016-10-18 280 views
1

我想獲得一個函數,只有當一個div中的多個元素包含某個文本時纔會觸發。我嘗試了以下的方法,但似乎無法使其工作:檢查是否有多個元素:包含某些文本

HTML

<div> 
    <h2> Some text here </h2> 
    <p> Some text here too </p> 
</div> 

jQuery的

$(document).ready.(function(){ 
    $('h2 && p:contains("text")'). //Do something(); 

}); 

在這種情況下,代碼應該 「有所作爲」 ,因爲h2和p都包含「文本」。

回答

2

可以檢查元素的數量超過1 length這樣的:

$(document).ready(function() { 
 
    if ($('div *:contains("text")').length > 1){ 
 
    $('div').css('background','red') 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <h2> Some text here </h2> 
 
    <p>Some text here too</p> 
 
</div>

+0

如果有兩個div包含一個包含「文本」的元素,則會失敗。 http://jsfiddle.net/4HQc4/1456/ –

+0

@ A.沃爾夫是正確的,但這種情況不是問題本身的一部分;無論如何,這裏的邏輯將適用於任何特定的情況下有一點改變...例如,你指出一個https://jsfiddle.net/mfgzx7mr/ – DaniP

+1

亞,但然後你應該使用:'$('> *:contains( 「text」)',this)'否則它可能仍然令人困惑https://jsfiddle.net/mfgzx7mr/1/或更多相關https://jsfiddle.net/mfgzx7mr/2/ –

0

你甚至可以這樣寫:

$('h2:contains("text")').length + $('p:contains("text")').length === 2 

這樣你肯定h2和p都匹配

相關問題