我在这里学习教程:http: //blog.chariotsolutions.com/2012/01/from-list-to-details-view-using.html
我正在尝试在呈现时将单击处理程序动态绑定到列表视图项。上面链接中描述的方法不起作用。我已经尝试了几种选择..
本教程在渲染函数中建议了这一点:(模板如下)
activities.each(function(activity){
var renderedItem = template(activity.toJSON()),
$renderedItem = $(renderedItem); //convert the html into an jQuery object
$renderedItem.jqmData('activityId', activity.get('id')); //set the data on it for use in the click event
$renderedItem.bind('click', function(){
//This part is different in tutorial, but irrelevant
alert("Hello.");
alert($(this).jqmData('activityId')); //'this' represents the element being clicked
});
listView.append($renderedItem);
});
这不起作用。创建了按钮,但是当我单击时没有任何反应,并且 Chrome 的开发工具仅显示两个单击事件侦听器:文档和文档
我试过这些作为替代品,但没有任何效果。没有警报消息,没有断点命中,没有注册的点击事件监听器。...
$renderedItem.on('click', function(){
alert("Hello.");
alert($(this).jqmData('activityId')); //'this' represents the element being clicked
});
$renderedItem.live('click', function(){
alert("Hello.");
alert($(this).jqmData('activityId')); //'this' represents the element being clicked
});
我也尝试过注册事件的标准主干方式无济于事......
events: {
'click .activity-list-item':'btnSelected'
},
...
btnSelected: function(){
alert("Hello");
//This is what I really want. Some data attached to the sender
alert($(this).jqmData('activityId'));
}
这是模板:
<li><a href="#activity-details" class="activity-list-item"identifier="<%= id %>"><%= date %> - <%= type %></a></li>
女士们,先生们,谢谢你们的宝贵时间。
编辑:我做了一个测试,我认为,出于某种原因,绑定被删除了。我可以做这个:
myCollection.at(0).bind('click', function(){
alert("hello");
});
myCollection.at(0).trigger('click');
......它可以正常工作。绑定可能会被删除是否有原因?
编辑2:这仍然没有解决。不幸的是,我的临时解决方案就是这样。我可以删除所有列表视图项目、重新填充和刷新,并且仍然具有可点击性,但如果我将项目附加到列表中,它们将不可点击。.bind、.on、.live、.delegate。它们都不起作用。我真的希望有更多关于此的文档。这是一个常见的编程问题,没有通用的解决方案。