4

我正在开发智能手机混合应用程序。

我正在尝试<div>slideDown/隐藏/显示一个slideUp

当我单击按钮时,菜单<div>应该根据上下文隐藏/显示。一切在我的电脑上运行良好,但在我的手机上根本无法运行,没有任何反应。

这是我的 HTML 代码

<a class="btnMenuDyn" data-role="button">Masquer le menu</a>

这里是我的 jQuery 移动代码:

$(document).bind('pageinit', function(e){


// définition des variables
var btnMenuDyn = $('a.btnMenuDyn'),
    menuDyn = $('div.menuDyn');

$(btnMenuDyn).bind('click', function(){


    // condition pour afficher ou non le menu
    if ($(menuDyn).hasClass("menuDynHide"))
    {
        $(menuDyn).slideDown().removeClass("menuDynHide");
    }
    else{
        $(menuDyn).slideUp().addClass("menuDynHide");
    }

});
});
4

2 回答 2

6

这个问题是手机不支持点击他们使用 touchstart 和 touchend 所以可以跟踪移动如果你仍然想在电脑上测试你可以这样做

$(btnMenuDyn).bind('touchstart mousedown', function(event){
    event.preventDefault();
    if ($(menuDyn).hasClass("menuDynHide"))
    {
        $(menuDyn).slideDown().removeClass("menuDynHide");
    }
    else{
        $(menuDyn).slideUp().addClass("menuDynHide");
    }

});

浏览器中具有相同答案的另一个问题jquery touchstart

更多信息可以在http://backtothecode.blogspot.com/2009/10/javascript-touch-and-gesture-events.html找到

于 2012-07-04T16:34:22.027 回答
1

我建议使用on()而不是bind()

既然你这样做了:

var btnMenuDyn = $('a.btnMenuDyn')

btnMenuDyn是一个 jquery dom 元素,所以改变这个:

if ($(menuDyn).hasClass("menuDynHide"))

对此

if (menuDyn.hasClass("menuDynHide"))

最好像这样声明 jquery dom 元素:

var $btnMenuDyn = $('a.btnMenuDyn')
于 2012-07-04T16:22:20.693 回答