我想为移动设备中的菜单执行以下操作: 只需单击一下,子项就会下拉。但是,双击,它应该直接到我的页面。 例如。关于项目有孩子,我也是一个链接,带我到关于页面。如果我单击它,子项应显示为块级元素。但如果我双击,它应该直接带我到它的链接(在这种情况下,到关于页面)。
我试过了:
$(document).ready(function (){
var clicks = 0;
$( "ul#primary > li.menu-item-has-children" ).click(function( e ) {
clicks++;
if(clicks === 1)
{
e.preventDeafult();
$("ul#primary > li.menu-item-has-children ul.sub-menu").css("display","block");
}
else if(clicks > 1) {
window.location($(this).attr("href"));
}
});
});
显然,else语句正在执行。但是当我第一次点击时,子菜单不显示。
我也尝试使用slideToggle()而不是css属性,但它不起作用。 不幸的是,该网站仍然在测试域和密码保护,所以我不能粘贴这里的链接。 希望你能帮忙。
答案 0 :(得分:1)
var DELAY = 700, clicks = 0, timer = null;
$("p").dblclick(function(e){
e.preventDefault(); //cancel system double-click event
}).click("click",function(){
clicks++; //count clicks
if(clicks === 1) {
timer = setTimeout(function(e) {
alert("Single Click"); //perform single-click action
clicks = 0; //after action performed, reset counter
}, DELAY);
} else {
clearTimeout(timer); //prevent single-click action
alert("Double Click"); //perform double-click action
clicks = 0; //after action performed, reset counter
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>Double-click or click.</p>
您需要点击和dblclick事件,如下所示,以完成您的工作 在点击事件中,您可以设置计时器以进一步增强它,请参阅已回答的问题@ Jquery bind double click and single click separately
$(document).ready(function (){
$( "ElementToBEClicked" ).click(function( e ) {
//Expand here your menu
}).dblclick(function(e){
//Redirect to URL on double click
});
});
更新
<p>Double-click or click.</p>
var DELAY = 700, clicks = 0, timer = null;
$("p").dblclick(function(e){
e.preventDefault(); //cancel system double-click event
}).click("click",function(e){
clicks++; //count clicks
if(clicks === 1) {
timer = setTimeout(function(e) {
alert("Single Click"); //perform single-click action
clicks = 0; //after action performed, reset counter
}, DELAY);
} else {
clearTimeout(timer); //prevent single-click action
alert("Double Click"); //perform double-click action
clicks = 0; //after action performed, reset counter
}
});