javascript - Backbone 中的全局点击事件

标签 javascript backbone.js requirejs

我正在使用phonegap、backbone.js 和require.js 构建一个应用程序。每个模板都有相同的导航菜单,模板中的每个标题都有一个滑入和滑出菜单的按钮。使用以下代码显示菜单:

$('#slide-menu-button').on("click", function (e) {
                var cl = document.body.classList;
                if (cl.contains('left-nav')) {
                    cl.remove('left-nav');
                } else {
                    cl.add('left-nav');
                }
    });

我不想将此代码放入每个 View 中。我可以将该代码放在哪里,以便无论当前显示什么模板,它始终都会执行?目前我将它放在 app.js 中,如下所示:

require.config({

    baseUrl: 'js/lib',

    paths: {
    app: '../app',
    tpl: '../tpl'
    },

    shim: {
    'backbone': {
        deps: ['underscore', 'jquery'],
        exports: 'Backbone'
    },
    'underscore': {
        exports: '_'
    }
    }
});

require(['jquery', 'backbone', 'app/router'], function ($, Backbone, Router) {

    var router = new Router();

    $("body").on("click", ".back-button", function (event) {
    event.preventDefault();
    window.history.back();
    });

    Backbone.history.start();

    $('#slide-menu-button').on("click", function (e) {

                var cl = document.body.classList;
                if (cl.contains('left-nav')) {
                    cl.remove('left-nav');
                } else {
                    cl.add('left-nav');
                }
    });

});

但是,这仅适用于加载的第一个模板,不适用于任何其他后续模板...

最佳答案

看起来您正在页面加载时为 #slide-menu-button 创建点击事件,因此它只会向已呈现的元素注册点击事件。您可以使用以下命令将事件应用于所有元素,包括稍后才会呈现到 DOM 的元素:

$( "body" ).on( "click", "#slide-menu-button", function( event ) {
    event.preventDefault();
    window.history.back();
});

参见http://api.jquery.com/on/

关于javascript - Backbone 中的全局点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19815379/

相关文章:

javascript - event.target 是否包含唯一的位置属性,以便无需使用 data-* 创建自定义元素属性?

javascript - 在 d3 的重复方法上获得更好的性能

Javascript:什么是回调?

javascript - 尝试获取脚本元素的内容时出现奇怪的行为

javascript - 在 Backbone.sync 中为另一台服务器上的 API 添加绝对 URL 路径

javascript - 如何让 TypeScript 理解 RequireJS 插件的导入路径,比如 "plugin!./path/to/foo"?

javascript - 要求.JS : loading modules that are dependent on each other?

jquery-mobile - jquery mobile require.js 和主干

javascript - jQuery:获取选定的元素标签名称

javascript - 动态 Backbone 模板变量