我发现了jQuery选择器的奇怪行为。当页面包含一些不具有唯一ID的元素时,jQuery会为相同的选择器返回不同的结果:
HTML:
<button id='btn1'>Button 1</button>
<button id='btn1'>Button 2</button>
<button id='btn3'>Button 3</button>
JS:
$('#btn1') - returns one element: button1
$('#btn1 ') - returns two elements: button1, button2
$('#btn1, #btn3') - returns three elements: button1, button2, button3
我想知道 - 这是jQuery错误还是有逻辑解释?
答案 0 :(得分:1)
你是对的,这似乎是奇怪的行为,但它可能不是由jQuery开发人员直接解决,正是因为HTML标准需要ID属性来唯一标识元素。您不应该认为这种行为是一致的。
现在关于修复它的相关问题,至少对我来说如何优先处理无效边缘情况是很有意思的。也许在对所有选择器进行消毒时会产生性能影响,以防止误用时出现不可预测的结果。
为jQuery提供动力的选择器引擎被称为Sizzle,因为你想深入研究它产生输出的方式和原因,还有一套单元测试(用QUnit框架编写)。
答案 1 :(得分:0)