jQuery Mobile 点击事件没有触发?

Posted

技术标签:

【中文标题】jQuery Mobile 点击事件没有触发?【英文标题】:jQuery Mobile click event not firing? 【发布时间】:2012-10-10 20:24:23 【问题描述】:

我整个上午都在尝试解决这个问题,所以如果可以的话,请帮助我。

我有这个代码:

$(document).bind('pageinit', function()
    var menuOpen;
    // Menu
    $('#menu-trigger').on('click', function(e)
        e.preventDefault();
        alert('click!');
        if(menuOpen != true) 
            $('.ui-page-active').animate(
                'margin-left': '390px'
            , 300, function()
                menuOpen = true
            );
            return false;
         else 
            $('.ui-page-active').animate('margin-left': 0, 300, function()menuOpen = false);
            return false;
        
    );
);

我的问题是我从来没有收到“click!”警报。单击带有id #menu-trigger 的元素后,没有任何反应。

我已经尽我所能,但仍然没有结果。

我的代码在 script 标记内,就在 jQuery Mobile 脚本包含的下方。

P.S.:这是 html 代码片段:

<header data-role="header" class="with-logo">
  <a href="#" id="#menu-trigger" data-role="button" class="ui-btn-left"><img src="images/menu-trigger-icon.png"></a>
  <h1><img src="images/logo.png"></h1>
</header><!-- /header -->

【问题讨论】:

【参考方案1】:

您必须从锚的 id 属性值中删除哈希符号。

锚标签应该是这样的:

<a href="#" id="menu-trigger" data-role="button" class="ui-btn-left">

事件处理脚本应该是这样的:

<script>
    $(document).on('click', '#menu-trigger', function(e)
        // your code
    );
</script>

我希望这会有所帮助。

【讨论】:

天哪!我是个白痴 :D 非常感谢您的关注!这是一个很好的例子,小石头可以把车翻过来:)再次感谢!【参考方案2】:

您应该将 pageinit 绑定到具有 data-role = "page" 的 div,而不是文档。

还取决于您的 html 的外观,您可能在错误的元素上使用了“on”。它必须是要将代码绑定到单击事件的元素的父元素。 所以就像

$('#someparent').on('click', yourfunctionasdefinedabove, '#menu-trigger');

(如果 menu-trigger 是父级,请忽略第二部分)

【讨论】:

感谢您的回答!父级是指元素的直接父级还是任何父级? 我不确定我是否理解 :( 我已经用我正在使用的 html 段更新了问题。

以上是关于jQuery Mobile 点击事件没有触发?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile Slider 禁用点击事件

按钮上的 JQuery Mobile“点击”事件也会触发它后面的元素上的“点击”

在jquery mobile中使按钮点击区域更大

Jquery Mobile Swipe 事件未触发

jQuery Mobile 1.3.1 taphold 事件多次触发

手机页的点击事件怎么写,是不是还要加载jquery mobile? 能不能同时加载电脑版jquer