JQuery“contains”不返回html编码

时间:2011-11-26 22:52:42

标签: javascript jquery html encoding

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

适用于某个页面,但

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

不返回任何内容,即使'& copy'确实出现在页面源中。我试图逃避'&',但这也不起作用。有没有办法使用contains来查找页面中的html编码字符?

基本上,我想要做的是找到元素包含©并解析它以获得版权所有者。我在这里用正则表达式问了一个类似的问题:select HTML text element with regex?

1 个答案:

答案 0 :(得分:1)

快速而肮脏:

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/