我有一个.NET MVC页面,其中每个项目都有一个列表<%: %>
中的rel
编码的描述。
我希望能够使用包含我的搜索查询的rel
搜索所有项目。
其中一个字段的值带有htmlentities rel='Décoration'
我在搜索框中输入“Décoration”,让jQuery搜索所有具有'rel'属性的元素,该属性包含(indexOf!= -1)该值:
没有结果!
为什么?因为Décoration != Décoration
。
比较这两者的最佳解决方案是什么? (不仅适用于é
,而且适用于所有特殊的带重音符号的字符)
P.S. (我尝试了两边的转义/转义,还尝试了将其附加到div上然后将其读取为文本的技巧,它取代了危险的东西,但并没有取代é(因为它在utf中是有效的,所以不必-8无论如何))
最佳答案
由于é
等是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/