2011-09-20 66 views
14

我正在做一個fullcalendar的項目,我需要能夠根據天數選擇一個元素。這裏是元素的樣品,我需要選擇:JQuery通過內部文本選擇

<div class=​"fc-day-number">​1​</div>​ 

這是我寫的JavaScript:

$("div.fc-day-number:contains(" + day + ")").parent().parent().css({ 'background-color': 'Green' }); 

這將抓住所有的內文包含日變量的div,問題是如果天== 1,那麼它也選擇11,12,13,21,31等。我如何編寫一個JQuery選擇器,它將抓住類爲「fc-day-number」的div並且其內部文本與天完全相同?

回答

15

寫自己的filter功能:

$("div.fc-day-number").filter(function(){ 
    return $(this).text() == day; 
}).parent().parent().css({ 'background-color': 'Green' }); 
+1

我可能會添加$(this).text()。toLowerCase()=== day; –

+0

@Kris爲什麼? OP只是使用數字,所以情況應該不重要。我也使用了double等號,因爲我認爲day是數字,而text()是字符串。 – Dennis

+0

哦,我認爲它可能只是任何文本/字符串。 –

3
$("div.fc-day-number").each(function(){ 
    if($(this).text()==day) 
    { 
     $(this).css({ 'background-color': 'Green' }); 
    } 
}); 
0
jQuery.expr[":"].text = jQuery.expr.createPseudo(function(arg) 
{ 
    return function(elem) { 
     return jQuery(elem).text().toLowerCase() == arg; 
    }; 
}); 

此代碼將添加新pseudoselector將過濾元件內部文本這不等於ARG。對你來說,在這裏使用例如:

$("div.fc-day-number:text(" + day + ")").parent().parent().css({ 'background-color': 'Green' }); 
+0

雖然這段代碼可能有助於解決問題,但它並沒有解釋_why_和/或_how_它是如何回答問題的。提供這種附加背景將顯着提高其長期教育價值。請[編輯]您的答案以添加解釋,包括適用的限制和假設。 –