Использование html () в качестве атрибута с jQuery - PullRequest
1 голос
/ 05 октября 2010

Я пытаюсь выбрать элемент в списке в зависимости от его содержания HTML. Я надеялся сделать что-то вроде $('li[html="something"]'), но, конечно, HTML не является атрибутом. Существует ли операция на основе эквивалентного множества?

Конечно, я могу перебрать все элементы в списке, используя $.each(), но мне кажется, что это будет намного медленнее.

Ответы [ 3 ]

1 голос
/ 05 октября 2010

вы можете попробовать: селектор ()

http://api.jquery.com/contains-selector/

$("li:contains('something')")

Для точного соответствия (по ссылке выше):

$.expr[":"].contains = function(obj, index, meta, stack){
    return $.trim($(obj).html()) == meta[3];
}

Использование:

$("li:contains('john')")

Это будет соответствовать только <li>John</li>, но не <li>A. John</li>, а <li>John 6</li> ... просто <li>John</li>!

0 голосов
/ 05 октября 2010

Спасибо, что указали мне правильное направление, но для правильного решения необходимо использовать это с помощью $ .extend. Вот что я придумал:

$.extend($.expr[':'], {
    'hasHtml': function(elem, i, attr) {
        return ($(elem).html() == attr[3]);
    }
});
0 голосов
/ 05 октября 2010

Посмотрите на селектор contains():

http://api.jquery.com/contains-selector/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...