为什么“[value ='']”在IE7中抛出异常并且“:not(:not([value ='']))”不是?

时间:2012-01-23 15:05:53

标签: javascript jquery internet-explorer-7

我试图通过jQuery从选择框中选择选项标签(带有值“”的选项)。我使用以下选择器:

$("[value='']");

这适用于大多数浏览器,但在IE7中它会引发异常。如果我将它更改为以下(imho等效)选择器,那么它可以正常工作:

$(":not(:not([value='']))");

我不想使用后者,但不能认为是更好的等同于先验。

编辑:

jQuery版本:1.3.1。
例外:
Microsoft JScript运行时错误:抛出异常而未捕获到 在

if(S==null){throw"Syntax error, unrecognized expression: "+ab}

其中

ab = "value='']"

测试设置:

为了确保我的其他代码没有引起问题,我在以下情况下重现了错误:

<html>
    <head>
        <script type="text/javascript" src="jquery-1.3.1.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                alert($("option[value='']").html());
            });
        </script>
    </head>
    <body>
        <select>
            <option value="">test</option>
            <option value="1">test1</option>
            <option value="2">test2</option>
        </select>
    </body>
</html>

编辑:

Link to bug report

2 个答案:

答案 0 :(得分:2)

我建议您使用最新的jQuery版本,这将解决您的问题。但如果您使用此版本的原因很充分,请尝试以下方法:

这适用于所有浏览器:

alert( jQuery( 'input[value=]' ) );

使用JSFiddle测试并且没有错误:http://jsfiddle.net/bobkruithof/WUVHj/

答案 1 :(得分:0)

理想情况下,它不应该给你任何错误。尝试指定标记类型$("input[value='']"),假设您没有任何其他元素可以使用value属性进行搜索。