Как лучше всего проверить, является ли выбранная в данный момент опция в раскрывающемся списке последней? - PullRequest
10 голосов
/ 05 апреля 2009

У меня есть выпадающий список, и я привязал к нему обработчик события изменения. Всякий раз, когда пользователь выбирает новую опцию, я хочу знать, является ли она последней опцией в списке.

Досадно, что соответствующее условие во фрагменте ниже всегда возвращает 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')) {
...
}

Кто-нибудь знает лучший способ сделать это?

Ответы [ 2 ]

18 голосов
/ 05 апреля 2009

Смотри, не раздувайся!

 sel.selectedIndex == sel.length-1

Это Стандартное решение W3C .

10 голосов
/ 05 марта 2010

Эй, вот еще один ... и это "jQuerish":)

$("select option:last").is(":selected")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...