返回意外值的jQuery.index()

返回意外值的jQuery.index(),jquery,Jquery,我手头有一个有趣的情况。也许是因为我工作到这么晚才放屁,但我有一件最奇怪的事情发生在我身上,那就是.index() 问题在于,当触发选择框更改事件处理程序时,它会尝试查找当前选择框的索引。如果页面上仅有的元素是选择框,则返回的索引是正确的。但是,如果还有其他元素,即使它们不是选择框,.index()也会根据页面上的全部元素返回索引,而不仅仅是$('select')元素 以下是我的事件处理程序: $('select').change(function() { alert(

我手头有一个有趣的情况。也许是因为我工作到这么晚才放屁,但我有一件最奇怪的事情发生在我身上,那就是
.index()

问题在于,当触发选择框更改事件处理程序时,它会尝试查找当前选择框的索引。如果页面上仅有的元素是选择框,则返回的索引是正确的。但是,如果还有其他元素,即使它们不是选择框,
.index()
也会根据页面上的全部元素返回索引,而不仅仅是
$('select')
元素

以下是我的事件处理程序:

$('select').change(function() {
        alert(
            '$(\'select\').length: ' + $('select').length + "\n" +
            '$(\'select\').last().index(): ' + $('select').last().index() + "\n" +
            '$(this).index(): ' + $(this).index());
    });
如果出于某种原因,这是正确的行为,有人能解释一下原因吗


提前感谢。

函数返回元素相对于直接父元素的从零开始的位置,默认情况下,标记名无关紧要。使用<代码>。索引(“选择”)只考虑<代码>选择< /Cord>标签。

您必须在索引中指定选择器。< /p>


大脑放屁+1,我永远听不到足够的声音。是的,它还不允许我,说我必须等4分钟
$(document).ready(function() {
    $('select').change(function() {
        alert(
            '$(\'select\').length: ' + $('select').length + "\n" +
            '$(\'select\').last().index(): ' + $('select').last().index('select') + "\n" +
            '$(this).index(): ' + $(this).index('select'));
    });

});