2009-09-16 131 views
24

我需要根據jQuery中的文本來選擇一個元素。jQuery基於文本選擇

例如:

<span>this text</span> 

我知道我可以使用。載有()來選擇基於文本,但它不是唯一的。

我不想選擇:

<span>this text and that text</span> 

我要選擇的元素,如果它是元素的純文本。

除了使用正則表達式,我該如何做到這一點與jQuery選擇器?

謝謝。

回答

34

你對包含選擇器有一些影響力,但只有這樣才行。你將需要進一步裁減元素集合的基礎上確切的文本匹配,如:

$("span:contains(this text)") 
.filter 
(
    function() 
    { 
    return $(this).text() === "this text"; 
    } 
) 

這使得最初包含使用在技術上是不必要的,但你可以用更小的集合開始了體驗的性能優勢SPAN元素過濾下來的確切集之前你有興趣

編輯:拿了肯布朗寧的建議,使用text()函數而不是innerHTMLfilter函數中的字符串比較。我們的想法是,innerHTML將捕捉我們並不特別感興趣的文本(包括標記)。

+4

好的答案,但爲什麼使用'innerHTML'而不是'$(this).text()'?不會使用'innerHTML'要求他考慮標準包含必須編碼的字符的情況(例如& - > &) – 2009-09-16 00:37:05

+0

對於挑剔,我給了你+1和推薦的答案! – 2009-09-16 00:42:56

+0

@DavidAndres而不是'innerHTML',你也可以使用'innerText',它比'.text()'快,並且不會包含標記。 – hitautodestruct 2013-07-28 13:52:59