Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干和jQuery事件_Javascript_Jquery_Javascript Events_Backbone.js - Fatal编程技术网

Javascript 主干和jQuery事件

Javascript 主干和jQuery事件,javascript,jquery,javascript-events,backbone.js,Javascript,Jquery,Javascript Events,Backbone.js,我有一个简单的任务-从DOM元素中检索click listener函数 我遇到了两个问题: 我不知道如何获取事件侦听器,它是通过addEventListenerfunc设置的 $(元素)。数据(“事件”)始终为空 谈到第一个问题——我认为这并不重要,因为我只在一个地方使用这个函数。但第二个问题是巨大的痛苦 我在纯jQuery环境中进行了测试: $(element).click(function(){}) $(element).data('events') /*contains e

我有一个简单的任务-从DOM元素中检索click listener函数

我遇到了两个问题:

  • 我不知道如何获取事件侦听器,它是通过addEventListenerfunc设置的
  • $(元素)。数据(“事件”)始终为空
  • 谈到第一个问题——我认为这并不重要,因为我只在一个地方使用这个函数。但第二个问题是巨大的痛苦

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

        $(element).click(function(){})
        $(element).data('events') /*contains events info*/
    
    但有骨气:

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

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

    如果您使用的是Backbone.js,那么您应该管理对象内部的事件,避免直接使用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();
    
    var myBody=$(“body”);
    var myDIV=$('');
    myBody.append(myDIV);
    var myButton=$(“测试”);
    myDIV.append(myButton);
    var MyView=Backbone.View.extend({
    el:myDIV,
    事件:{'click button#aButton':'doSomething},//在这里您绑定了
    //事件到函数。
    初始化:函数(){
    _.bindAll(此“呈现”)
    },
    render:function(){
    myDIV.append(“
    正在工作…”); }, doSomething:function(){ 警报('doSomething function..after click event'); } }); var myView=newmyview; myView.render();
    PS:了解其工作原理的一个很好的教程:

    您为“但有主干”示例发布的代码与您的“纯jQuery环境”示例完全相同。显然,你正在做的另一件事就是打破它。您需要将这些添加到您的问题中。