3

我手上有一个有趣的情况。也许是因为我工作这么晚所以脑子放屁,但我遇到了最奇怪的事情.index()

这是一个jsfiddle

The problem is that when a select box change event handler gets triggered, it tries to find the index of the current select box. 如果页面上唯一的元素是选择框,那么它返回的索引是正确的。但是,如果还有其他元素,即使它们不是选择框,也会.index()返回基于页面上总元素的索引,而不仅仅是$('select')元素。

这是我的事件处理程序:

$('select').change(function() {
        alert(
            '$(\'select\').length: ' + $('select').length + "\n" +
            '$(\'select\').last().index(): ' + $('select').last().index() + "\n" +
            '$(this).index(): ' + $(this).index());
    });

如果由于某种原因这是正确的行为,有人可以解释为什么会这样吗?

提前致谢。

4

2 回答 2

0

index函数返回元素相对于直接父元素的从零开始的位置,默认情况下标签名称无关紧要。用于.index("select")仅考虑select标签。

于 2012-12-09T04:42:05.343 回答
0

您必须在索引中指定选择器。

http://jsfiddle.net/Q5Lmy/1/

$(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'));
    });

});

http://api.jquery.com/index/ ​</p>

于 2012-12-09T04:47:20.970 回答