如何在骨干中的动态生成按钮上绑定事件?

JAB*_*ABD 18 javascript jquery backbone.js underscore.js

如何在backbone.js中的动态生成按钮上绑定click事件?

 window.PackageView = Backbone.View.extend({

    tagName: "div",

    className: "package-template",

    events:{
      'click #display-nodes'  :  'main', // This button is declared in my HTML code and calls main method successfully.
      'click .display'        :  'disp', // This is dynamic button generated with class as display
    },

    getAction: function(nodeId){ // Get Actions from NodeId and generate buttons
      $('.nodes').append("<button>" + action.Name + "</button>"); //Generate Buttons
      $(".nodes button").addClass("display");
    },

    disp: function(){
        alert("Inside Disp Function");
    },
Run Code Online (Sandbox Code Playgroud)

单击#display-nodes节点时,将根据需要显示但.display不起作用.如何让这个按钮调用该功能?

Ben*_*kin 33

events只要动态生成的DOM元素是视图的后代,Backbone视图就可以通过属性从动态生成的DOM元素接收事件el.相关代码在delegateEvents()中.它使用jQuery的delegate()选择器方法.

它不适合你的最可能的原因是新创建<button>的不是视图的后代el.我对吗?

如果是这种情况,并且您希望将元素保留在视图之外,则el可以将其从视图的events属性中删除,并委托视图init方法中的另一个元素.