我有一个.NET MVC页面,其中包含一个项目列表,每个条目在rel中都有<%: %>编码的描述。我希望能够使用包含我的搜索查询的rel搜索所有项目。
其中一个字段的值带有has实体rel='Décoration'。
我在搜索框中键入"Décoration“,让jQuery搜索所有包含(indexOf != -1)值的'rel‘属性的元素:
没有结果!
为什么?因为Décoration != Décoration。
比较这两种情况的最佳解决方案是什么?(必须适用于所有特殊的重音字符,而不仅仅是é)
P.S. (我在两边都尝试了逃逸/取消逃逸,也尝试过将其附加到div中,然后将其作为文本阅读,这会替换危险的东西,但不会替换é(因为它在utf-8中是有效的)。
发布于 2011-05-09 14:06:29
由于é和like是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;
}发布于 2011-05-09 14:17:03
如果您使用UTF-8编码为您的页面提供服务,则不需要对所有重音字符使用实体。问题解决了。
发布于 2011-04-06 18:56:28
您可以对html实体进行解码。只需从这里复制两个javascript方法
var decoded = 'Décoration';
var entity = html_entity_decode('Décoration');
console.log(decoded == entity);https://stackoverflow.com/questions/4898579
复制相似问题