JQuery "содержит" ничего не возвращает для кодировки HTML - PullRequest
3 голосов
/ 27 ноября 2011
var foundin = $('*:contains("the")').last();

работает на странице, но

var foundin = $('*:contains("&copy")').last();

ничего не возвращает, даже если в источнике страницы отображается «& copy». Я пытался убежать от '&', но это тоже не сработало. Есть ли способ использовать содержит, чтобы найти HTML-кодированный символ на странице?

По сути, я хочу найти элемент, содержащий & copy; и разобрать его, чтобы получить правообладателя. Я задал похожий вопрос, направленный на это с помощью регулярного выражения: выбрать текстовый элемент HTML с помощью регулярного выражения?

1 Ответ

1 голос
/ 27 ноября 2011

Быстро и грязно:

var $div = $("<div>");

$.expr[":"].containsEnc = function(a, b, c, d) {
    var decoded = $div.html(c[3]).text(); // decode &copy to ©

    return ~a.textContent.indexOf(decoded); // does the element contain the character
};

Тогда вы можете использовать containsEnc в качестве селектора:

$('body:containsEnc("&copy")').html('ok');

Возможно, он не самый безопасный и самый производительный.

http://jsfiddle.net/wfLur/1/

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