Вы можете использовать функцию trigger()
для немедленного запуска события;
$('#mycheckbox').click(function (){
if ($('#mycheckbox').is(':checked')){
$('.myclass').hide();
} else {
$('.myclass').show();
}
}).trigger('click');
Однако имейте в виду, что это также вызовет любые другие обработчики кликов, которые вы определили для элемента.
Кроме того, вы можете написать крошечный плагин jQuery, чтобы сделать это для вас;
jQuery.fn.nowAndOn = function (event, handler) {
handler();
this.bind(event, handler);
return this; // support chaining
};
И ты будешь использовать это как;
$(function() {
$('#mycheckbox').nowAndOn('click', function (){
if ($('#mycheckbox').is(':checked')){
$('.myclass').hide();
} else {
$('.myclass').show();
}
});
});
Однако проблема в том, что внутри обработчика щелчка this
обычно является текущим элементом; тогда как при вызове handler();
, как мы делаем здесь, this
будет указывать на window
(это не относится к тому фрагменту кода, который вы опубликовали, поскольку вы не используете this
).
Чтобы исправить this
, мы могли бы добавить некоторую сложность и использовать метод Function.call
, чтобы установить значение this
;
jQuery.fn.nowAndOn = function (event, handler) {
this.each(function () {
handler.call(this);
});
this.bind(event, handler);
return this;
};
Однако у вас все еще будет проблема, если вы полагаетесь на передаваемый объект Event ...