jQuery选择器返回Safari中的重复元素

Mik*_*att 3 jquery jquery-selectors

我有一个jQuery选择器,它按标签名称和类查询元素.在我希望返回三个元素的查询中,Safari(适用于Windows的v3.1.1)返回一个额外的元素.

原因似乎是数字ID*.将ID更改为非数字将消除重复元素.奇怪的是,将第一个元素的ID更改为其他数字对最终结果计数具有看似随机的影响.ID为4会将结果计数增加到五.0,9和1234都返回四个元素.

<div class="mydiv" id="1"></div>
<div class="mydiv" id="2"></div>
<div class="mydiv" id="3"></div>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
    $(function()
    {
        var div = $('div.mydiv');
        alert( div.length );                // Safari 3.1.1 returns 4
        alert( $.unique( div ).length );    // Safari 3.1.1 returns 3
    } );
</script>
Run Code Online (Sandbox Code Playgroud)

Firefox 3和IE 7在两个警报框中显示3.

*我知道数字ID 不是有效的HTML标识符. 我正在使用的jqGrid插件默认使用行ID的数字. 我将考虑改变这种行为,但与此同时我很好奇为什么这会影响上述查询.

编辑

自从我查看jqGrid的数据检索代码以来已经有一段时间了.事实证明,我可以将行ID设置为服务器上我想要的任何内容.

Nic*_*ver 6

简短回答:使用无效HTML时,您将始终遇到不可预测的行为. (即使你正在做的事情在95%的时间里有效)

问题是,正如你所说,数字ID是无效的,这样做计数等时,浏览器可以自由地做这样的假设......如果它们是无效的,它会导致一个错误,嗯......这不是他们的错误.