javascript - 如何在主干中动态生成的按钮上绑定(bind)事件?

标签 javascript jquery backbone.js underscore.js

如何在backbone.js中动态生成的按钮上绑定(bind)点击事件?

 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");
    },

单击#display-nodes 时,节点将按要求显示,但.display 不起作用。如何让这个按钮调用该函数?

最佳答案

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

它不适合您的最可能原因是新创建的 <button>不是 View el 的后代。我说得对吗?

如果是这种情况,并且您希望将该元素保留在 View 的 el 之外,您可以将其从 View 的 events 中删除。 View 中另一个元素的属性和委托(delegate) init方法。

关于javascript - 如何在主干中动态生成的按钮上绑定(bind)事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6987386/

相关文章:

javascript - 以 Express 方式将主干集合保存到 MongoDB

javascript - 从输入将数据添加到模型

javascript - 同时设置多个元素的样式

javascript - 登录时显示按钮,Meteor 的空格键

javascript - 使用 Javascript 限制 Words 中文本区域的长度?

javascript - Firefox 中的 Kiwi 文本样式

jquery - 如果 Jquery .is (":hover") 在 IE8 中不起作用

Javascript 比较不​​适用于提示、while 循环和 !==

Javascript 迭代创建的动态对象

javascript - Backbone model.save() 以一种奇怪的方式将属性发送到服务器