jQuery + Jeditable - определить, когда выбор изменен

Я использую Jeditable для редактирования на месте. Один элемент управления, с которым я работаю, имеет тип select. Когда пользователь щелкает поле, создается следующий элемент управления select:

<div id="status" class="editable_select">
    <form>
        <select name="value">
            <option value="Active">Active</option>
            <option value="Inactive">Inactive</option>
        </select>
        <button type="submit">Save</button>
        <button type="cancel">Cancel</button>
    </form>
</div>

Я пытаюсь понять, как использовать jQuery для обнаружения изменения этого элемента управления select, тем более что у него нет атрибута ID.

Это то, что у меня есть до сих пор, но событие не запускается:

$(document).ready(function () {
    $('#status select').change(function () {
        alert("Change Event Triggered On:" + $(this).attr("value"));
    });
});

ОБНОВЛЕНИЕ

Обновление до jQuery 1.4.2 решило мою проблему вместе с использованием решения Мэтта.


person Bryan Roth    schedule 29.03.2010    source источник


Ответы (1)


Вы, вероятно, найдете его, потому что поле выбора было добавлено на страницу после ее загрузки (и после того, как ваши привязки событий имеют место).

Вы по-прежнему можете отслеживать события изменений, используя live.

$(document).ready(function () {
    $('#status select').live('change', function () {
        alert("Change Event Triggered On:" + $(this).attr("value"));
    });
});

Обратите внимание, что, начиная с версии 1.7, метод on() является предпочтительным способом привязки обработчиков событий. Эквивалент вышеизложенного:

$(document).ready(function () {
    $(document).on('change', '#status select', function () {
        alert("Change Event Triggered On:" + $(this).attr("value"));
    });
});
person Matt    schedule 29.03.2010
comment
Получил работу, спасибо. Однако это событие почему-то не всплывает в IE. Мысли? - person Bryan Roth; 30.03.2010
comment
jQuery должен сделать это так. Какой код вы используете, который не работает? - person Matt; 30.03.2010
comment
@Matt: я использую предоставленный вами код - он отлично работает в других браузерах, кроме IE8. - person Bryan Roth; 30.03.2010
comment
@Matt: Обновление до jQuery 1.4.2 решило мою проблему. Еще раз спасибо! - person Bryan Roth; 30.03.2010