Javascript 主干,如何确保视图中声明的函数只影响该视图中的DOM元素?

Javascript 主干,如何确保视图中声明的函数只影响该视图中的DOM元素?,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,以下视图绑定到cars元素 当视图初始化时,我加载一个特定的模板,该模板加载一个名为”的div 现在,我想对该菜单执行一些操作,用hmtl填充它,我只希望视图内部的菜单受到影响。 如果该页面上有另一个“菜单”,在视图之外,它将受到影响 如何确保视图中的JavaScript只影响该视图中的元素 var myView = Backbone.View.extend({ el : '.cars', pag : '.pagination', initialize : func

以下视图绑定到cars元素

当视图初始化时,我加载一个特定的模板,该模板加载一个名为”的div

现在,我想对该菜单执行一些操作,用hmtl填充它,我只希望视图内部的菜单受到影响。

如果该页面上有另一个“菜单”,在视图之外,它将受到影响

如何确保视图中的JavaScript只影响该视图中的元素

var myView = Backbone.View.extend({

    el : '.cars',

    pag : '.pagination',

    initialize : function () {

        var template = _.template(myTemplate, {});

        $(this.el).html(template);

        $('.menu').html('test');
    },

    events : {
    'click .pagination a' : 'click'
},

});
我可以这样做:

$('.cars .menu').html('test');
但我认为应该有一个更优雅的解决方案,比如将.menu绑定到视图

第二个问题


如果我将单击事件绑定到视图中名为.pagination的div。。。如何在events对象中使用变量而不是写入元素的名称?

视图的
el
中的html可以在
find
范围内:

yourView.$el.find(".menu");
或通过上述方法的快捷方式:

yourView.$(".menu");
考虑到第二个问题,您还可以使用事件绑定到视图中的元素:

 // in the model definition
 events: {
   // This would only bind to clicks for .pagination elements that are
   // children of the view
   'click .pagination a' : function (e) {
      // You can get at the clicked element via the `currentTarget` property 
      // of the event
      var href = $(e.currentTarget).attr('href');
      console.log(href);
   }
 }

我会编辑并问你一些其他的问题,也许你能帮上忙。Ty非常喜欢:)我没有测试它,事件部分(就像你读了我的心思)-你是说有另一个div叫做menu,在视图之外,它不会受到点击的影响吗?没错。它通过视图的
el
使用事件委派。元素内部的事件向上传播。我正在开发一个应用程序,它开始打包。很难学会如何使用require、主干、下划线、模板。。。但现在我可以开始看到,这使得分配内容变得多么简单,我没有编辑它以使用
currentTarget
<例如,如果链接中有
span
s等,则code>target可能会产生误导。