Справка по jQuery Selector - PullRequest
       0

Справка по jQuery Selector

4 голосов
/ 27 сентября 2010
...
<tr>
    <td>222</td>
</tr>
<tr>
    <td>333 222</td>
</tr>
...

И у меня есть этот код для селектора:

$("#TableName tr td:contains('222')");

Проблема: мне нужно выбрать ячейку, для которой html имеет значение только '222.
Я пытаюсь использовать $("#TableName td tr[html=222]"), ноне работает.

Ответы [ 2 ]

5 голосов
/ 27 сентября 2010

Вы можете использовать .filter() вместо для точного соответствия.

var result = $("#TableName tr td").filter(function() {
    return $.text([this]) === "222";
});

При этом $.text() используется для сравнения текстового значения <td> с "222",Это просто немного более быстрый способ сделать $(this).text().Дает вам тот же результат. (Обратите внимание, что вам нужно передать this в массиве [this].)

При совпадении элемент возвращается в результирующий объект jQuery.

Если в <td> есть какая-либо возможность пробега или пробела, вы можете обрезать с помощью $.trim().

return $.trim( $.text([this]) ) === "222";

РЕДАКТИРОВАТЬ: Вы можете создать свой собственный селектор, который будет выполнять ту же задачу, если вы хотите:

$.extend($.expr[':'], {
    textIs: function(elem, i, attr) {
        return ($.trim( $.text([elem]) ) === attr[3]);
    }
});
var result = $("#TableName tr td:textIs(222)")
0 голосов
/ 27 сентября 2010

Я нашел эту реализацию такого селектора (в комментариях в http://api.jquery.com/contains-selector/)

$.expr[":"].econtains = function(obj, index, meta, stack){
return (obj.textContent || obj.innerText || $(obj).text() || "").toLowerCase() == meta[3].toLowerCase();
}

Пример:

$("div:econtains('john')").css({ color: "#F00" });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...