jQuery + Jeditable - определяет, когда изменяется выбор - PullRequest
5 голосов
/ 30 марта 2010

Я использую 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"));
    });
});

UPDATE

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

1 Ответ

7 голосов
/ 30 марта 2010

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

Вы все еще можете захватить события изменения, если это так, используя 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"));
    });
});
...