jQuery字符串比较在IE7中表现不同

时间:2011-09-20 17:16:36

标签: javascript jquery internet-explorer-7 cross-browser

以下代码段与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中也是如此。

2 个答案:

答案 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函数等。如果您摆脱了所有垃圾,您的代码应该可以正常工作。