Как связать события с динамическими сгенерированными кнопками в позвоночнике?
Как связать событие click с динамическими сгенерированными кнопками в backbone.js?
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
не работает. Как заставить эту кнопку вызывать функцию?
Ответы
Ответ 1
A Магистральный вид может получать события от динамически создаваемых элементов DOM через свойство events
, если динамически сгенерированные элементы DOM являются потомками представления el
. Соответствующий код находится в delegateEvents(). Он использует jQuery метод делегирования().
Наиболее вероятная причина, по которой он не работает для вас, заключается в том, что вновь созданный <button>
не является потомком представления el
. Я прав?
Если это так, и вы хотите сохранить элемент вне представления el
, его можно удалить из свойства view events
и делегировать на другой элемент в вашем представлении init
.
>