如何防止第一次单击时的链接操作,并允许仅使用jquery进行第二次单击

我正在努力寻找类似于我之前已经发布的一个问题的解决方案,这个问题没有准确的解决方案。

如果您在移动设备上查看此站点: http : //www.adfinity.co.za/business-partners/ 。如果您第一次在“关于我们菜单项”下单击时会看到它,它将显示子项目……只有当您第二次点击它时,它才会转到“关于我们”页面。 我寻找其他一些问题,但他们并没有真正做到这一点。

我几天前发布了一个类似的问题没有最终答案: 如何阻止菜单点击function和仅活动双击

请帮我为我的网站做这件事。

现在我试过这个:

$(document).ready(function (){ $("ul#primary-menu > li.menu-item-has-children").one("click", function(e) { e.preventDefault(); $(this).text("Click again to open"); }); }); 

当我在实际的手机上测试时,不得不双击该项目,只有这些子项目才会下降。

你的代码应该工作,只要确保也返回false,并检查你的浏览器控制台,看看jQuery中是否有任何错误:

 $(document).ready(function (){ $("ul#primary > li.menu-item-has-children").one("click", function(e) { e.preventDefault(); $(this).text("Click again to open"); return false; }); }); 

这个怎么样:

当您点击其他地方时,点击次数将返回0.基本上,我为每次有人点击时检查了一个点击事件,如果点击的目标与存储的目标匹配,则代码将会运行。

 $(function(){ var clickedOnce = undefined; $(".twice-btn").click(function(e){ e.preventDefault(); var $this = $(this), $oTarget = e.target; if (clickedOnce !== $oTarget) { setTimeout(function(){ //this setTimeout is just to delay this action after the body click event handler clickedOnce = $oTarget; }, 0); } }); $("body").on("click", function (e) { if (e.target == clickedOnce) window.location = $(e.target).attr("href"); clickedOnce = undefined; }); }) 
  Click me! Click me too! 

鉴于您的CSS选择器实际上与您的HTML DOM结构匹配,您的代码几乎可以。 我说几乎是因为你实际操作li元素而不是a ,因此调用this.text("Click again to open")实际上会替换有效删除元素的内容。
享受以下片段:

 $(document).ready(function (){ $("ul#primary-menu > li.menu-item-has-children > a").one("click", function(e) { e.preventDefault(); $(this).text("Click again to open"); }); });