我有一个.NET MVC页面,其中包含每个项目的列表
<%: %>
中的rel
编码说明。
我希望能够使用包含我的搜索查询的rel
搜索所有项目。
其中一个字段的值为htmlentities rel='Décoration'
我在搜索框中输入“Décoration”,让jQuery搜索所有具有'rel'属性的元素,该属性包含(indexOf!= -1)该值:
没有结果!
为什么呢?因为Décoration != Décoration
。
比较这两者的最佳解决方案是什么? (必须适用于所有特殊重音字符,而不仅仅是é
)
P.S。 (我尝试了两边的escape / unescape,也尝试了将它附加到div然后将其作为文本读取,这取代了危险的东西,但不替换é(它不必因为它在utf中有效) -8无论如何))
答案 0 :(得分:2)
由于é
等是html实体,您可以使用乱码字符串设置临时div的html内容,并使用元素的文本内容来检索已解码的字符串。浏览器将为您完成解码工作。
function searchInRel(needle) {
return $('[rel]').filter(function(i,e) {
var decodedText = $('<div/>').html(e.attr('rel')).text();
return (decodedText.indexOf(needle) != -1);
};
}
function decodeEntities(text) {
var tempDiv = document.getElementById('tempDiv');
tempDiv.innerHTML = text;
return tempDiv.textContent;
}
答案 1 :(得分:1)
如果您使用UTF-8编码提供网页,则无需为所有重音字符使用实体。问题解决了。
答案 2 :(得分:0)
您可以解码html实体。 只需从HERE
复制两个javascript方法即可var decoded = 'Décoration';
var entity = html_entity_decode('Décoration');
console.log(decoded == entity);