【问题标题】:jQuery .click() is clicking, but it shouldn´tjQuery .click() 正在点击,但它不应该
【发布时间】:2015-07-29 06:56:44
【问题描述】:

在测试我的 JavaScript 时遇到以下问题:

$('#idOfMyElement').click();

被执行。但我想验证我的测试,即 执行,因为它具有以下 CSS:

<span style="cursor: not-allowed; pointer-events: none;" id="idOfMyElement"></span>

我对其进行了调试,可以肯定的是,当 .click() 被执行时,它肯定具有提到的 CSS 属性。在我的正常程序中它可以工作(意味着点击不起作用),但在我的测试中,点击可以工作,即使它不应该。

我没有 clou,可能是什么问题。 感谢您的帮助!

【问题讨论】:

    标签: javascript jquery html css testing


    【解决方案1】:

    看起来在您的测试中,您正在使用$('#idOfMyElement').click(); 以编程方式触发事件;在这种情况下,它不受 CSS 鼠标规则的约束,因此单击处理程序将被执行。

    您需要在测试套件中触发点击事件之前检查鼠标指针规则

    【讨论】:

    • 好的,这意味着我必须在我的测试中比在我的程序中更具体?在我的程序中,我没有额外检查鼠标指针规则或类似的东西。在我的程序中,我为元素提供了提到的 css 属性,然后单击什么也不做,一切都很好。
    【解决方案2】:

    使用jQuery防止默认点击事件:

    $('#idOfMyElement').on('click', function(e) {
      e.preventDefault(); });
    

    * 更新 *

    既然我知道您要做什么,我强烈建议您使用 javascript 而不是 CSS,因为 CSS 不能像您尝试使用它的方式工作 - Javascript 可以。不要使用 CSS 属性,而是使用 Javascript 变量。

    当您希望元素可点击时,

    $('#idOfMyElement').prop('disabled', false);

    当它应该是不可点击时,

    $('#idOfMyElement').prop('disabled', true);

    浏览器在不需要 CSS 的情况下处理光标,点击事件应该做出适当的反应。希望对您有所帮助!

    【讨论】:

    • 但是使用这个解决方案,点击永远不会被执行,不是吗?当给出提到的 css 属性时,点击应该什么都不做。对不起我的英语不好和我不理解;-)
    • 更新了我的答案以满足您的需要!
    【解决方案3】:

    指针事件只正确响应真正的指针事件。如果您触发 click() 函数,它会在您创建它的所有时间触发。如果指针事件处于活动状态,只需添加条件读数或将其替换为禁用属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多