javascript - 主干和 jQuery 事件

标签 javascript jquery backbone.js backbone-events

我有一个简单的任务 - 从 DOM 元素检索点击监听器函数。

我已经解决了两个问题:

  1. 我不知道如何获取事件监听器,它是通过addEventListener 函数设置的
  2. $(element).data('events') 总是

关于第一个问题 - 我认为这并不重要,因为我只在一个地方使用这个功能。但是第二个问题是一个巨大的痛苦......

我已经在纯 jQuery 环境中进行了测试:

    $(element).click(function(){})
    $(element).data('events') /*contains events info*/

但是有了 Backbone:

    $(element).click(function(){})
    $(element).data('events') /*alway empty*/

我不是 JS 大师,但似乎根本没有绑定(bind)数据...也许这只是典型的 Backbone 行为,但仍然 - 我如何检索事件处理程序?

最佳答案

如果您使用的是 Backbone.js,您应该在 Backbone.View 中管理您的事件对象并避免直接使用 JQuery 捕获事件。

你应该尝试这样的事情:

var myBody  = $( 'body' );
var myDIV = $( '<DIV id="contentDIV"></DIV>' );
myBody.append( myDIV );
var myButton = $( '<button id="aButton">test</button>' );
myDIV.append ( myButton );

var MyView = Backbone.View.extend({
    el : myDIV,

    events: { 'click button#aButton' : 'doSomething' }, //here you bound the 
                                                        //event to a function.
    initialize: function(){
        _.bindAll(this, 'render') 
    },
    render: function(){
        myDIV.append('<br>working...');
    },
    doSomething: function(){
        alert( 'doSomething function.. after click event' );
    }
});

var myView = new MyView;
myView.render();

PS:了解其工作原理的好教程:http://arturadib.com/hello-backbonejs/

关于javascript - 主干和 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8290084/

相关文章:

php - jquery 自动完成并不适用于每个字段

jquery - 从所有具有 class 的元素中获取 id 和 text 并将其放入 JSON 数组中

javascript - 如何将主干模型插入子集合?

Backbone.js - 后退按钮恢复滚动位置

javascript - 主干 - this.$el vs $(this.el)?

javascript - 模拟点击 Javascript/jQuery 中的链接产生正常的浏览器行为

javascript - Visual Studio Code - 如何防止注释折叠

javascript - 如何在jquery中解析这个json?

jquery - 如果 select 有选项,如何使用 jquery 检查?

javascript - 检测 window.location 的变化