将具有新id的HTML元素动态添加到Backbone View

时间:2012-12-11 11:43:06

标签: jquery backbone.js

我有一个列表<ul>的模板,其中包含2 <li>个链接<a id='variable_id'>,其中包含不同的ID。我已将事件绑定到这两个ID iniciaispalavras。问题是,当我点击iniciais链接的示例时,我会从<ul>中将其删除,并使用id='palavras'创建新链接。问题是,即使事件在events哈希上,这个新链接也没有绑定到它的事件。如何对jQuery live子元素上的on BackboneView方法执行某些操作?

var MyView = Backbone.View.extend({
  el: '#campos',
  initialize: function() {
  },

注意我如何将事件绑定到2种链接。

  events: {
    'click #palavras': 'mudar_para_consulta_palavras',
    'click #iniciais': 'mudar_para_consulta_iniciais'
  },

在此方法中,我从列表中删除列表项,并使用新ID插入一些新内容。

  mudar_para_consulta_palavras: function() {
    $('#campo_consulta').val('');
    $('#campo_consulta').attr('placeholder', 'Digite palavras inteiras');
    $("#campo_consulta").attr('tipo', 'chave');
    $('#palavras').parent().remove();
    $("<li><a id='#iniciais'>Consultar por Iniciais</a></li>").insertBefore('.divider');
  },

对于这个其他方法也是如此,只更改id定义。

  mudar_para_consulta_iniciais: function() {
    $('#campo_consulta').val('');
    $('#campo_consulta').attr('placeholder', 'Digite inicio de palavras');
    $("#campo_consulta").attr('tipo', 'iniciais');
    $('#iniciais').parent().remove();
    $("<li><a id='#palavras'>Consultar por palavras</a></li>").insertBefore('.divider');
  }
});
return MyView;
});

1 个答案:

答案 0 :(得分:2)

我认为您在插入DOM的标记中只会出现小错误:

$("<li><a id='#iniciais'>Consultar por Iniciais</a></li>")

$("<li><a id='#palavras'>Consultar por palavras</a></li>")

id属性中不应包含#字符。