2011-09-20 68 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_它是如何回答问题的。提供这种附加背景将显着提高其长期教育价值。请[编辑]您的答案以添加解释,包括适用的限制和假设。 –