在测试我的JavaScript时遇到以下问题:
$('#idOfMyElement').click();
已执行。但我想用我的测试来验证,那就是不执行,因为它有以下CSS:
<span style="cursor: not-allowed; pointer-events: none;" id="idOfMyElement"></span>
我调试了它,并且可以肯定的是,当执行.click()
时,它确实具有所提到的CSS属性。在我的正常程序中它起作用(意味着点击不起作用),但在我的测试中,点击有效,即使它不应该。
我没有clou,可能是什么问题。 谢谢你的帮助!
答案 0 :(得分:7)
在您的测试中,您似乎是使用$('#idOfMyElement').click();
以编程方式触发事件;在这种情况下,它不受CSS鼠标规则的约束,因此点击处理程序将被执行。
在触发测试套件中的点击事件之前,您需要检查鼠标指针规则。
答案 1 :(得分:1)
指针事件仅对真实指针事件做出正确响应。如果触发click()函数,它会一直触发它。如果指针事件处于活动状态,则添加一个条件读取,或者用禁用的属性替换它
答案 2 :(得分:1)
使用jQuery防止默认点击事件:
$('#idOfMyElement').on('click', function(e) {
e.preventDefault(); });
*更新*
现在我知道你正在尝试做什么,我强烈推荐在CSS上使用javascript,因为CSS不会像你尝试使用它那样工作 - Javascript确实如此。而不是使用CSS属性,使用Javascript变量。
如果您希望元素可点击,
$('#idOfMyElement').prop('disabled', false);
当它应该不可点击时,
$('#idOfMyElement').prop('disabled', true);
浏览器在不需要CSS的情况下处理游标,点击事件应该做出适当的反应。希望这很有用!