如何运行复选框单击处理程序而不切换复选框



我写了一些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 );

参见工作演示

相关内容

最新更新