2017-03-09 99 views
2
$.extend($.expr[':'], { 
'containsi': function(elem, i, match, array) 
{ 
return (elem.textContent || elem.innerText || '').toLowerCase() 
.indexOf((match[3] || "").toLowerCase()) >= 0; 
} 
}); 
window.setInterval(function() { 
$("div[class^='chat-box-content'] div[class^='message'] span:containsi(Dexter)").css("background","greenyellow"); 
},1000); 

這是我突出顯示包含單詞「德克斯特」的消息的當前方法。然而,有時在聊天中,人們會說敏捷,這也會突出顯示。我找只強調單詞「德克斯特」jQuery包含更長的單詞

的顯示的消息可能包含其他內容的方法。例如,下面是一條消息: Dexter:實際上,德克斯特

它包含的字實際上,它不會通過使用文本函數進行匹配。

+0

你是否想要匹配部分消息?您不能使用選擇器來選擇單詞,只能使用完整元素。 –

+0

我現在的工作,它突出顯示每個包含德克斯特的消息。然而,人們常常發送一條關於敏捷的信息,這也是突出顯示的,但不受歡迎。我只想要帶有Dexter的消息。 –

+0

在這種情況下,您應該獲取元素並檢查特定文本。更新了我的答案。 –

回答

1

如果你想文本

的嚴格匹配
span:containsi(Dexter) 

應該

span:text(Dexter) 

更新:

在您應該使用過濾器的話..

var matchedElem= $("div[class^='chat-box-content'] div[class^='message'] span:containsi(Dexter)").filter(function() { 
    return $(this).text() === 'Dexter'; 
}); 

matchedElem.css("background","greenyellow"); 
+0

該消息可能包含其他內容。例如,這是一條消息: Dexter:其實,dexter 它包含實際上這個詞,它不會被匹配。 –

+0

更新了我的回答 –

+0

這似乎並不奏效。它仍然只突出顯示包含單詞「德克斯特」的郵件,但如果它包含其他任何內容,則不會 –