Событие смены триггера jQuery на флажке
Возможно ли инициировать событие изменения в флажке с помощью javascript/jquery?
Что-то вроде этого (я запускаю triggerChange нажатием кнопки):
<label><input type="checkbox" id="chk"/>Label for chk</label>
<script>
function triggerChange(){
$("#chk").trigger("change");
}
</script>
Когда я запускаю вышеуказанный код, я получаю эту ошибку: " триггер не является функцией".
Ответы
Ответ 1
Это сообщение об ошибке trigger is not a function
указывает на что-то еще в игре. Согласно этому такому вопросу:
Что происходит, когда селектор jQuery не был найден?
no.good.at.coding
говорит:
Однако обратите внимание, что вы должны убедиться, что селектор является объектом jQuery! В противном случае вы можете получить ошибку, указывающую, что "триггер не функция".
Вполне вероятно, что вы забыли JQuery?
Что касается вашей реализации, у вас должно быть все в порядке, как вы ее используете. Но trigger
должен использоваться для запуска методов событий для элементов, которые уже были присоединены через jQuery. Посмотрите мою демонстрацию:
Fiddle:
С событием клика: http://jsfiddle.net/fS4R5/1/
Без события клика: http://jsfiddle.net/fS4R5/2/
HTML:
<label><input type="checkbox" id="chk"/>Label for chk</label>
JS:
function triggerChange(){
$("#chk").trigger("change");
}
$("#chk").change(function() {
alert("triggered!");
});
triggerChange();
Ответ 2
В jQuery вы обычно можете инициировать событие, вызывая его метод eventhandler с любыми параметрами функции.
Например, обработчик кликов может быть назначен как таковой:
$('#mything').click(function(e){dostuff});
событие click само по себе может быть запущено простым запуском:
$('#mything').click();
Я подозреваю, что это можно сделать для каждого существующего события в jQuery.
Ответ 3
Я думаю, что предпочтительный метод с 1.9.1 равен 'on'. Особенно если вы используете динамически добавленные флажки.
Скажем, у вас есть div с id = 'divCOntent', и на нем есть флажок с id = 'cballaut', вы можете сделать это
$('#divcontent').on('click', '#cballaut', function (e) {
alert(this.checked);
});
Ответ 4
использовать метод prop.
$('#myCheck').prop('checked', true);
$('#myCheck').prop('checked', false);
Ответ 5
Убедитесь, что установлен флажок "Ввод типа", в случае отключения триггер не будет запускать событие
//fire event
$('#ceckBoxId').click();
$('#ceckBoxId').trigger('click');
или поменяйте флажок checked
val
$('#ceckBoxId').prop('checked', true);
$('#ceckBoxId').prop('checked', false);