jquery 和浏览器假点击

Posted

技术标签:

【中文标题】jquery 和浏览器假点击【英文标题】:jquery and browser fake clicking 【发布时间】:2011-11-18 15:11:35 【问题描述】:

我知道浏览器不支持虚假点击。我知道我可以回去并开始重构所有突兀的 javascript……但这不会发生。话虽这么说......

事情就是这样。

我有一堆代表偏好的链接。 EX:(这是渲染的内容。下面创建这个的实际jsp看起来并不有趣。)

<table id="snTabsAvail" class="content" cellspacing="5" cellpadding="1" border="0" align="center">
<tbody>
  <tr>
    <td id="Serial Number_Engine Test_0" class="tbutton"  nowrap=""   style="background-color:lime">
      <a href="javascript:tabToggle('Serial Number', 'Engine Test', spref, 0, tabPicked, tabAvailable, 'Failed to update your tab preference, please try again later'); ">
    </td>
    <td id="Serial Number_Machine Test_1" class="tbutton"  nowrap=""  style="background-color:lime">
      <a href="javascript:tabToggle('Serial Number', 'Machine Test', spref, 1, tabPicked, tabAvailable, 'Failed to update your tab preference, please try again later'); ">
   </td>
...

这些调用代表 Ajax 调用,它们在服务器上设置首选项。我想包括一个全选和一个取消全选,所以我不必单独单击所有这些。我知道我不能这样做

$('#snTabsAvail td[style=background-color:silver] a').click();

由于虚假点击问题。

由于这些点击代表 javascript ajax 调用,我试图弄清楚如何点击我想要选择的那些,取消选择。链接所在的单元格代表“选项卡”,您可以通过它们的背景颜色判断哪些单元格被选中...这就是为什么我说,此表中任何具有未选择背景颜色的单元格,获取锚点,然后单击,这是行不通的。

关于如何在这里获取所有锚点并假点击它们有什么想法吗?是的..我的意思是编程。

【问题讨论】:

据我所知,我们可以用.click()模拟鼠标点击。您的意思是因为有 >1 个链接对象而无法正常工作吗?或者,因为点击触发了 AJAX 调用? 你不能用 jquey .click() 它们:问题是你不能通过点击触发链接的默认操作。见:forum.jquery.com/topic/jquery-a-0-click-not-working 【参考方案1】:

您可以在每个链接的 href 属性上使用 eval()(不确定是否必须删除“javascript:”部分),如下所示:

eval($('#snTabsAvail a').attr('href').substring(11));

编辑:当然这是针对单个链接的,您必须遍历 $('#snTabsAvail a') 返回的元素以获得完整的解决方案。

【讨论】:

这很有用,但我尝试将它们从锚点更改为基本上聚合一堆 javascript 函数,然后执行,但问题是 IE 没有同时更新 dom (或排队)ajax 以我想要的方式调用。我最终得到了一堆以编程方式“点击”的“选项卡”。但是 dom 从未更新,因此这些更改在 ui 中很明显。一旦我回到这个问题上,我将不得不重新考虑解决方案。

以上是关于jquery 和浏览器假点击的主要内容,如果未能解决你的问题,请参考以下文章

jquery 一个按钮点击,复制文本内容

JavaScript 或 jQuery 浏览器后退按钮点击检测器

JQuery 事件

jquery如何实现一个按钮只能点击一次,再点击就无效?

用jquery怎么实现点击显示,再一次点击隐藏

jquery怎么引用