【问题标题】:How to simulate .click() on mobile如何在移动设备上模拟 .click()
【发布时间】:2020-07-10 23:50:44
【问题描述】:

我需要单击一个 div 来执行操作。 我成功地做了桌面版,但是当我去移动时,点击操作不起作用。 我尝试了几种在 Stack Overflow 和其他网站中找到的方法,但任何方法都有效...

我的桌面代码:

document.getElementById('BtMisDocumentos').click();

我的移动代码(3 次尝试);

$('BtMisDocumentos').trigger('vclick');
$('BtMisDocumentos').trigger('tap');
$('BtMisDocumentos').trigger('touchstart');

分;

<div id="BtMisDocumentos" class="dx-button dx-button-normal dx-button-mode-text dx-widget dx-button-has-text" onclick="void(0)" role="button" aria-label="Mis Documentos" style="width: 140px;"><div class="dx-button-content"><span class="dx-button-text">Mis Documentos</span></div></div>

有什么想法吗?也许不起作用,因为我使用的是用户代理,尽管是“真正的”移动设备?

【问题讨论】:

  • 非常重要的是,您还要提及您在哪个移动设备、操作系统、操作系统版本以及移动浏览器和版本上进行测试,逻辑不工作的地方?
  • 谢谢!我正在使用 iPhoneX 用户代理在 Chrome 83.0 上进行测试。
  • 事件应该是一样的。移动浏览器通常使用虚拟事件来触发click 事件。查看 TouchPunch 或 jQuery Mobile 以获得一些提示。此外,您的选择器看起来也不正确。
  • 错字:$('BtMisDocumentos') -> $('#BtMisDocumentos')。此外,根据您尝试触发的事件处理程序的绑定方式,您可能需要引发原生点击事件:$element[0].click()

标签: javascript jquery jquery-mobile jquery-events


【解决方案1】:

我认为你遗漏了一些东西:

//Use a . for a element class and # for a element id. Use it in the $('#...') part.
$('.BtMisDocumentos').trigger('vclick');
$('#BtMisDocumentos').trigger('tap');
$('.BtMisDocumentos').trigger('touchstart');

也可以用 .click() 试试这个。

jQuery 文档: https://api.jquery.com/click/

编辑@TWISTY:

如果您只想复制和粘贴:

//With a HTML class attribute. Example: <div class="BtMisDocumentos"></div>
$('.BtMisDocumentos').trigger('vclick');
$('.BtMisDocumentos').trigger('tap');
$('.BtMisDocumentos').trigger('touchstart');
$('.BtMisDocumentos').click();

//With a HTML id attribute. Example: <div id="BtMisDocumentos"></div>
$('#BtMisDocumentos').trigger('vclick');
$('#BtMisDocumentos').trigger('tap');
$('#BtMisDocumentos').trigger('touchstart');
$('#BtMisDocumentos').click();

【讨论】:

    【解决方案2】:

    当使用 jQuery 与 JavaScript 时,您将使用 CSS 样式选择器。

    $('#BtMisDocumentos').trigger('vclick');
    $('#BtMisDocumentos').trigger('tap');
    $('#BtMisDocumentos').trigger('touchstart');
    

    对于您的代码,以下内容应该仍然适用于移动设备:

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

    【讨论】:

    • 这与我的回答有何不同?
    • @Allart 当 OP 从未提及 Class 属性时,您正在使用 Class 选择器。
    • 我举了一个例子来说明如何做到这一点,希望他和其他人能理解......如果可以,请告诉我哪个部分不清楚,以便我更改它。或者也许要求对我的回答提出编辑请求:)
    • @Allart 最好澄清一下您正在使用 Class 选择器和 ID 选择器给出示例。如果 OP 准确地使用了您的答案,则由于缺少 BtMisDocumentos 类的元素,某些项目将无法正常工作。这会误导 OP 和其他人。如果我想编辑你的答案,我不需要问,stackoverflow.com/help/privileges
    • 这个怎么样 :D @Twisty
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多