我正在努力寻找类似于我之前已经发布的一个问题的解决方案,这个问题没有准确的解决方案。
如果您在移动设备上查看此网站:http://www.adfinity.co.za/business-partners/。如果您第一次在“关于我们菜单项”下单击时会看到它,它将显示子项...并且仅显示当您第二次单击时,它将转到“关于我们”页面。 我寻找其他一些问题,但他们并没有真正做到这一点。
几天前我发布了一个类似的问题但没有最终答案: How to prevent menu from click function and active double click only
请帮我为我的网站做这件事。
现在我试过了:
$(document).ready(function (){
$("ul#primary-menu > li.menu-item-has-children").one("click", function(e) {
e.preventDefault();
$(this).text("Click again to open");
});
});
当我在实际的手机上测试时,不得不双击该项目,只有这些子项才会被删除。
答案 0 :(得分:1)
您的代码应该可以工作,只要确保也返回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;
});
});
答案 1 :(得分:0)
这个怎么样:
当您点击其他地方时,点击次数将返回0.基本上,我为body
添加了点击事件,以便在每次有人点击时进行检查,如果点击的目标与存储的目标匹配,则代码将会运行
$(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;
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a class="twice-btn" href="http://example.com">Click me!</a>
<a class="twice-btn" href="http://example.com">Click me too!</a>
如果您要将用户发送出去,可以在clickedOnce = undefined
clickedOnce = $oTarget
并添加任何提醒(例如“再次点击到xxx”)
答案 2 :(得分:0)
您的代码几乎没问题,因为您的CSS选择器实际上与您的HTML DOM结构相匹配。我说几乎,因为您实际操作的是li
元素,而不是a
,因此调用this.text("Click again to open")
实际上会替换li
的内容有效地删除{ {1}}元素。
享受以下片段:
a
$(document).ready(function (){
$("ul#primary-menu > li.menu-item-has-children > a").one("click", function(e) {
e.preventDefault();
$(this).text("Click again to open");
});
});