我正在使用MarionetteJS v2.0.2,这是我的问题
我有itemView bellow
var Users = Marionette.ItemView.extend({
template: 'user.html',
tagName: 'li',
attributes: {
class: 'name'
},
initialize: function () {
//console.log(this);
},
events: {
"click.name": "onClick"
},
onClick: function () {
console.log('click');
}
});
所以当我在我的活动中写“click.name”时,事件被解雇了,但是当我写“click .name”(有一个空格)时,它不是。
任何人都可以帮我理解为什么吗?
答案 0 :(得分:1)
正如评论中提到的,之所以
events: {
"click .name": "onClick"
},
不起作用是通过添加" .NAME"你正在为事件绑定提供一个选择器,但绑定的范围是视图本身的el(在你的情况下是li),因为你分配了" .name" li的类没有带有该类名的内部项,绑定也不起作用。
执行" click.name" (没有空格)就像在做"点击"只为你提供绑定的命名空间,就jQuery而言这是有效的 - http://api.jquery.com/on/#event-names
你可以看到这是如何工作没有主干。例如,采取以下绑定:
//this will work because were listening for click on our li
$("li").on("click", function(){
console.log("im the jquery handler");
});
//this will work because were doing the same as before only adding a namespace for our event
$("li").on("click.name", function(){
console.log("im the jquery handler");
});
//this will NOT work because were adding the .name selector and jquery wont find an element with this class in our li element
$("li").on("click",".name", function(){
console.log("im the jquery handler");
});
简而言之,就事件而言,您不需要.name,或者您应该将.name类作为模板的一部分添加到内部元素,然后它将使用您在问题中提供的代码。< / p>