Javascript 主干视图+;事件

Javascript 主干视图+;事件,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,如果单击按钮或触发事件,为什么没有触发事件? 我错过了什么 <html> <head><script src="jquery-1.7.1.js" type="text/javascript"></script> <script src="underscore.js" type="text/javascript"></script> <script src="backbone.js" type="text/javascr

如果单击按钮或触发事件,为什么没有触发事件? 我错过了什么

<html>
<head><script src="jquery-1.7.1.js" type="text/javascript"></script>
<script src="underscore.js" type="text/javascript"></script>
<script src="backbone.js" type="text/javascript"></script>
<script type="text/javascript">

var SearchView = Backbone.View.extend({

    events: {
        "click #testid": 'savenow'
    },

    initialize: function(){
        console.log("init");
        console.log($('testid'));
    },

    savenow: function(){
        console.log("test save method");
    }
});

// The initialize function is always called when instantiating a Backbone View.
// Consider it the constructor of the class.
var search_view = new SearchView({ el: $('#testid') });
search_view.trigger("savenow", "test");
</script></head>
<body>
<h1>test</h1>
<input id="testid" type="button" value="testbutton" />
</body></html>

var SearchView=Backbone.View.extend({
活动:{
“单击测试”:“立即保存”
},
初始化:函数(){
console.log(“init”);
log($('testid');
},
savenow:function(){
日志(“测试保存方法”);
}
});
//实例化主干视图时,始终调用initialize函数。
/将其视为类的构造函数。
var search_view=newsearchview({el:$('#testid')});
search_view.trigger(“savenow”、“test”);
测试
上面的例子几乎是复制的,但在我的例子中它不起作用

events: {
    "click": 'savenow'
},
给你!不带选择器的事件类型在视图
el
本身上添加事件侦听器

给你!不带选择器的事件类型在视图
el
本身上添加事件侦听器

给你!不带选择器的事件类型在视图
el
本身上添加事件侦听器

给你!不带选择器的事件类型将事件侦听器添加到视图
el
本身上。

您将el设置为#testid-然后,您告诉它在配置事件时查看#testid中的#testid:as

events:{
"click #testid":"savenow"
}
通过将事件对象更改为

events:{
"click":"savenow"
}
您只是针对视图的所有el(在本例中为#testid)

或者,您可以将事件配置保持原样,并将el更改为搜索面板的body或parent div(我假定它包含文本输入字段或其他设置,以及按钮)。

您将el设置为testid-然后,当您配置事件时,您告诉它在testid中查找testid:as

events:{
"click #testid":"savenow"
}
通过将事件对象更改为

events:{
"click":"savenow"
}
您只是针对视图的所有el(在本例中为#testid)

或者,您可以将事件配置保持原样,并将el更改为搜索面板的body或parent div(我假定它包含文本输入字段或其他设置,以及按钮)。

您将el设置为testid-然后,当您配置事件时,您告诉它在testid中查找testid:as

events:{
"click #testid":"savenow"
}
通过将事件对象更改为

events:{
"click":"savenow"
}
您只是针对视图的所有el(在本例中为#testid)

或者,您可以将事件配置保持原样,并将el更改为搜索面板的body或parent div(我假定它包含文本输入字段或其他设置,以及按钮)。

您将el设置为testid-然后,当您配置事件时,您告诉它在testid中查找testid:as

events:{
"click #testid":"savenow"
}
通过将事件对象更改为

events:{
"click":"savenow"
}
您只是针对视图的所有el(在本例中为#testid)


或者,您可以将事件配置保持原样,并将el更改为搜索面板的body或parent div(我认为它包含文本输入字段或其他设置以及按钮)。

您有一些问题。正如其他答案所建议的那样,
事件
对象需要更改。默认情况下,这会将单击事件绑定到
#testid
,因为这是视图的
el
。关于这个主题的一些阅读

第二个问题是-在加载
DOM
之前加载代码。这意味着您的视图无法绑定到
testid
元素。要解决这个问题,您需要将代码包装到函数中

<script type="text/template">
  $(function() {
      /* All your code
       ...
       ...
       */
  });
工作代码示例:

<html>
  <head>
    <script src="jquery-1.7.1.js" type="text/javascript"></script>
    <script src="underscore.js" type="text/javascript"></script>
    <script src="backbone.js" type="text/javascript"></script>
    <script type="text/javascript">

      // Run this block of code when the DOM is loaded.
      $(function() {

        var SearchView = Backbone.View.extend({

          // Listen for click events on this view's element - '#testid'.
          events: {
            "click": 'savenow'
          },

          initialize: function(){
            console.log("init");
            // listen for the savenow event triggered by this view.
            this.listenTo(this,'savenow',this.savenow);
          },
          savenow: function(){
            console.log("test save method");
          }
        });

        var search_view = new SearchView({ el: '#testid' });
        search_view.trigger("savenow", "test");
      });
    </script>
  </head>
  <body>
    <h1>test</h1>
    <input id="testid" type="button" value="testbutton" />
  </body>
</html>

//加载DOM时运行此代码块。
$(函数(){
var SearchView=Backbone.View.extend({
//侦听此视图元素-#testid上的单击事件。
活动:{
“单击”:“立即保存”
},
初始化:函数(){
console.log(“init”);
//侦听此视图触发的savenow事件。
this.listenTo(this,'savenow',this.savenow);
},
savenow:function(){
日志(“测试保存方法”);
}
});
var search_view=newsearchview({el:'#testid'});
search_view.trigger(“savenow”、“test”);
});
测试

您有一些问题。正如其他答案所建议的那样,
事件
对象需要更改。默认情况下,这会将单击事件绑定到
#testid
,因为这是视图的
el
。关于这个主题的一些阅读

第二个问题是-在加载
DOM
之前加载代码。这意味着您的视图无法绑定到
testid
元素。要解决这个问题,您需要将代码包装到函数中

<script type="text/template">
  $(function() {
      /* All your code
       ...
       ...
       */
  });
工作代码示例:

<html>
  <head>
    <script src="jquery-1.7.1.js" type="text/javascript"></script>
    <script src="underscore.js" type="text/javascript"></script>
    <script src="backbone.js" type="text/javascript"></script>
    <script type="text/javascript">

      // Run this block of code when the DOM is loaded.
      $(function() {

        var SearchView = Backbone.View.extend({

          // Listen for click events on this view's element - '#testid'.
          events: {
            "click": 'savenow'
          },

          initialize: function(){
            console.log("init");
            // listen for the savenow event triggered by this view.
            this.listenTo(this,'savenow',this.savenow);
          },
          savenow: function(){
            console.log("test save method");
          }
        });

        var search_view = new SearchView({ el: '#testid' });
        search_view.trigger("savenow", "test");
      });
    </script>
  </head>
  <body>
    <h1>test</h1>
    <input id="testid" type="button" value="testbutton" />
  </body>
</html>

//加载DOM时运行此代码块。
$(函数(){
var SearchView=Backbone.View.extend({
//侦听此视图元素-#testid上的单击事件。
活动:{
“单击”:“立即保存”
},
初始化:函数(){
console.log(“init”);
//侦听此视图触发的savenow事件。
this.listenTo(this,'savenow',this.savenow);
},
savenow:function(){
日志(“测试保存方法”);
}
});
var search_view=newsearchview({el:'#testid'});
search_view.trigger(“savenow”、“test”);
});
测试

您有一些问题。正如其他答案所建议的那样,
事件
对象需要更改。默认情况下,这会将单击事件绑定到
#testid
,因为这是视图的
el
。关于这个主题的一些阅读

第二个问题是-在加载
DOM
之前加载代码。这意味着您的视图无法绑定到
testid