我写了一些jQuery代码,像这样:
$('#checkbox').click(function() {
// do stuff
});
function myFunction() {
$('#checkbox').click();
}
这里期望的行为是在myFunction执行时调用复选框单击处理程序。然而,我观察到的行为是点击处理程序运行,复选框被切换。如何在不切换复选框的情况下运行单击处理程序?
$('#checkbox').triggerHandler("click");
您应该在复选框被更改时调用一个方法,以便您可以在单击事件之外调用相同的方法:
$('#checkbox').change(function() {
someMethod();
});
function myFunction(){
someMethod();
}
您在函数中进行处理并让click处理程序调用该函数如何:
function myFunction() {
// do stuff
}
$('#checkbox').click(function() {
myFunction()
});
试试:
$('#checkbox').click(function(event) {
event.preventDefault();
// do stuff
});
参见工作演示
另一个区分是否被myFunction()调用的选项:
$('#checkbox').click(function(event, caller) {
if (caller == 'MF') {
event.preventDefault();
}
// do stuff
$(this).parent().append('<span>It wasn't checked</span><br>');
});
function myFunction() {
$('#checkbox').trigger('click', ['MF']);
}
$('#clk').on('click', myFunction );
参见工作演示