以下代码段与jQuery UI自动完成元素(#search
)一起使用。在Firefox,Chrome等中,它的行为符合预期,并且对于所选元素始终返回true。 在Internet Explorer 7中,它不是。
$('mySelector').filter(function() {
if ($(this).text().toLowerCase() == $('#search').val().toLowerCase()) {
return true;
}
});
关于如何引起这种行为的任何提示,我将非常感激!
编辑:在粘贴ŠimeVidas的好分析功能后,我再次运行该东西,这里的比较结果应该返回true:
经过一番调查后再进行调查。我似乎比较返回true(感谢上帝,否则我需要缩小)。但是filter函数会返回任何有效对象。如果比较是真的,它应该是什么。
编辑:原来我只检测过一切都很好的情况。一些条目在名字和姓氏之间有两个空格,这在FF和Chrome中没有导致FALSE评估,但在IE7中也是如此。
答案 0 :(得分:2)
下面:
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/
警告框会显示两个字符串的所有代码点....
答案 1 :(得分:1)
IE7中的$(this).text()
可能会返回一些额外的字符。例如,额外的空格,新行(\r\n
)等。尝试输出$(this).text()
和$('#search').val()
并直观地比较这两个字符串。
此外,您可以尝试添加jQuery.trim
函数等。如果您摆脱了所有垃圾,您的代码应该可以正常工作。