javascript - 在 jQuery 中控制触发点击 UI 事件的顺序

标签 javascript jquery events

我有一个 <input type="checkbox" />它通过 jQuery 的 .click 绑定(bind)了一个点击处理程序功能。然后它根据其状态执行一些计算:

$(':checkbox').click(function () {
    if (this.checked) {
        console.log("ACTIVE");
    } else {
        console.log("INACTIVE");
    }
});

在 UI 中这一切都很好,但是,在我的单元测试中,我想模拟对此元素的点击并确保运行正确的代码。

$(testElement).click();

问题在于处理程序在默认浏览器操作之前 被调用,因此 this.checked 的值被逆转。也就是说,它没有得到它的 checked属性更改直到我的处理程序运行之后。

有什么办法解决这个问题吗?我可以绑定(bind)其他事件吗?是否有其他方式以编程方式触发点击?

最佳答案

看着这个blog post您可以通过执行以下操作来获得您正在查看的行为:

$( ":checkbox" )[ 0 ].checked = !$( ":checkbox" )[ 0 ].checked;
$(":checkbox" ).triggerHandler( "click" );

并配合使用triggerHandler() ,您将只会触发 jQuery 绑定(bind)的事件,而不是默认行为。

jsfiddle 上的代码示例.

关于javascript - 在 jQuery 中控制触发点击 UI 事件的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343545/

相关文章:

javascript - 当我增加/减少 div 的大小时,jQuery UI : How can I set the resizing limit, 纵横比

数百万行的 JavaScript 数据网格

java - 按键事件未触发

java - setOnClickListener 从未触发 - Android/Eclipse

javascript - 如何在 V8 Javascript 引擎中公开一个 C++ 类,以便可以使用 new 创建它?

javascript - Angularjs 将代码转换为指令或 ng-repeat

javascript - 如何在一个二维 Canvas 上下文上一次绘制多条线?多用户画板

javascript - 在图像标签上添加覆盖时避免鼠标外出

javascript - 从用户脚本将独立于样式的 jQuery UI 对话框添加到 DOM

python - 是否可以只运行 asyncio 事件循环的一个步骤