10

我有一个下拉列表,并且已将更改事件处理程序绑定到它。每当用户选择一个新选项时,我想知道它是否是列表的最后一个选项。

烦人的是,无论选择了哪个选项,下面代码段中的相关条件总是返回 true:

        sel.change(function() {
            //this always returns true!
            if(jQuery('#' + this.id + ' option').is(':last')) {
                alert('hello I am the last option');
                inputDiv.show();
                inputDiv.find("input").attr('disabled',false);
            } else {
                inputDiv.hide();
                inputDiv.find("input").attr('disabled',true);
            }
        });

即使我这样做,结果也是一样的:

if(jQuery('#' + this.id + ' option:selected').is(':last')) {
...

我究竟做错了什么?如果你知道,为什么这些测试都评估为真?

编辑:找到解决方案:

if(jQuery('#' + this.id + ' option:last').is(':selected')) {
...
}

有谁知道这样做的更好方法?

4

2 回答 2

18

看,没有膨胀!

 sel.selectedIndex == sel.length-1

这就是W3C 标准解决方案

于 2009-04-05T17:30:40.940 回答
12

嘿,这是另一个……它是“jQuerish” :)

$("select option:last").is(":selected")
于 2010-03-04T22:18:36.540 回答