主干和jQuery事件

Backbone and jQuery events

本文关键字:事件 jQuery      更新时间:2023-09-26

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

我遇到两个问题:

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

说到第一个问题-我认为这不是关键的,因为我只在一个地方使用这个函数。但第二个问题是一个巨大的痛苦…

我已经测试了纯jQuery环境:

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

But with Backbone:

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

我不是一个JS大师,但似乎没有绑定数据。也许这只是典型的骨干行为,但是——我如何检索事件处理程序?

如果你使用的是Backbone.js,你应该在Backbone中管理你的事件。查看对象,避免使用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/