我有一个.NET MVC页面,其中每个项目都有一个列表<%: %>中的rel编码的描述。
我希望能够使用包含我的搜索查询的rel搜索所有项目。

其中一个字段的值带有htmlentities rel='D&eacute;coration'
我在搜索框中输入“Décoration”,让jQuery搜索所有具有'rel'属性的元素,该属性包含(indexOf!= -1)该值:

没有结果!

为什么?因为Décoration != D&eacute;coration

比较这两者的最佳解决方案是什么? (不仅适用于&eacute;,而且适用于所有特殊的带重音符号的字符)

P.S. (我尝试了两边的转义/转义,还尝试了将其附加到div上然后将其读取为文本的技巧,它取代了危险的东西,但并没有取代é(因为它在utf中是有效的,所以不必-8无论如何))

最佳答案

由于&eacute;等是html实体,因此您可以使用乱码设置临时div的html内容,并使用元素的文本内容检索解码后的字符串。浏览器将为您完成解码工作。

使用jQuery:

function searchInRel(needle) {
    return $('[rel]').filter(function(i,e) {
        var decodedText = $('<div/>').html(e.attr('rel')).text();
        return (decodedText.indexOf(needle) != -1);
    };
}

仅使用DOM:
function decodeEntities(text) {
    var tempDiv = document.getElementById('tempDiv');
    tempDiv.innerHTML = text;
    return tempDiv.textContent;
}

关于JavaScript htmlentities法语,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4898579/

10-11 01:14