下面的片段与jQuery UI自动完成元素(#search)一起使用。在Firefox、Chrome等浏览器中,它的行为与预期一致,并总是为所选元素返回true。Internet 7中的它不是。
$('mySelector').filter(function() {
if ($(this).text().toLowerCase() == $('#search').val().toLowerCase()) {
return true;
}
});对于任何可能导致这种行为的暗示,我将非常感谢!
编辑:在粘贴了Šime Vidas的尼斯分析函数之后,我再次运行了这个功能,下面是应该返回true的比较结果:

经过进一步的调查。我的比较似乎是正确的(谢天谢地,否则我就需要一个心理医生)。但是filter函数返回任何有效的对象。如果比较正确的话。
编辑:只测试了一切正常的情况。有几个条目在名字和姓氏之间有双空格,这不会导致FF和Chrome中的错误评估,而在IE7中是这样的。
发布于 2011-09-20 17:43:55
在此:
function analyze( str ) {
var output, i;
output = 'String: ' + str + ' - Length: ' + str.length + '; ';
for ( i = 0; i < str.length; i += 1 ) {
output += str.charCodeAt( i ) + ' ';
}
return output;
}然后:
alert( analyze( operand1 ) + '\n\n' + analyze( operand2 ) );现场演示: http://jsfiddle.net/jsZzY/
警报框将显示两个字符串的所有代码点.
发布于 2011-09-20 17:21:44
也许$(this).text() in IE7会返回一些额外的字符。例如,额外的空格、新行(\r\n)等。尝试输出$(this).text()和$('#search').val(),并对这两个字符串进行可视化比较。
此外,您还可以尝试添加jQuery.trim函数,等等。如果您从所有垃圾中清除,您的代码应该可以工作。
https://stackoverflow.com/questions/7489052
复制相似问题