Выбор JQuery по внутреннему тексту

Я делаю проект с fullcalendar, и мне нужно выбрать элемент на основе числа дней. Вот пример элемента, который мне нужно выбрать:

<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, который будет захватывать divs с классом "fc-day-number" и чей внутренний текст точно равен день?

Ответы

Ответ 1

Напишите свою собственную функцию filter:

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

Ответ 2

$("div.fc-day-number").each(function (){
    if($(this).text()==day)
    {
        $(this).css({ 'background-color': 'Green' });
    }
});

Ответ 3

jQuery.expr[":"].text = jQuery.expr.createPseudo(function(arg)
{
    return function( elem ) {
        return jQuery(elem).text().toLowerCase() == arg;
    };
});

Этот код добавит новый псевдоселектор, который будет фильтровать элементы внутреннего текста, который не равен arg. Для примера используйте здесь так:

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