Javascript 单击主干路由器中的链接时如何传递事件(访问数据属性)
我在主干应用程序中有这样的路由Javascript 单击主干路由器中的链接时如何传递事件(访问数据属性),javascript,backbone.js,Javascript,Backbone.js,我在主干应用程序中有这样的路由 <a href="/2015/09/28/do-you-drink-whiskey" data-info="jerk">link</a> <a href="/2015/09/29/do-you-drink-beer/" data-info="slob">link</a> 更新 您可以在这里看到,即使使用jQuery(正如发布的第一个答案所建议的那样),数据属性也是不可访问的,因为主干网没有传递事件使用jQuery
<a href="/2015/09/28/do-you-drink-whiskey" data-info="jerk">link</a>
<a href="/2015/09/29/do-you-drink-beer/" data-info="slob">link</a>
更新
您可以在这里看到,即使使用jQuery(正如发布的第一个答案所建议的那样),数据属性也是不可访问的,因为主干网没有传递事件使用jQuery data()函数
你也可以使用
$(this)
而不是
$(e.currentTarget)
更新
要在函数Match中获取数据信息,请执行以下操作
var R = Backbone.Router.extend({
routes:{
"": "list",
"restaurants/:id": "restoDetails",
"2015/*splat": "matchAnything"
},
matchAnything: function(e){
var info = lastElementClicked.data('info');
console.log(info, "info?");
},
restoDetails: function() {
console.log('restoDetails', arguments);
},
list: function() {
console.log('list', arguments);
}
});
var lastElementClicked;
$(document).on('click', 'a[href^="/"]', function(e){
e.preventDefault();
lastElementClicked = $(this)
var href = lastElementClicked.attr('href');
Backbone.history.navigate(href, {trigger: true});
});
new R();
Backbone.history.start({pushState: true});
我想我应该重新表述我的问题,指出如何通过主干路由器传递事件,因为即使我使用jquery,它也不可用。主干未通过该事件。这里是你答案的演示,啊,我明白了,你想在matchAnything函数中得到这个值。我只能做一个可行的方法来检查这一点,虽然它的工作可能不是最好的解决方案。我认为你应该考虑用不同的方式来处理你的数据。信息(“jerk”、“slob”)应该是路由路径的一部分,或者它应该属于对路由事件做出反应的模型。
$(e.currentTarget)
var R = Backbone.Router.extend({
routes:{
"": "list",
"restaurants/:id": "restoDetails",
"2015/*splat": "matchAnything"
},
matchAnything: function(e){
var info = lastElementClicked.data('info');
console.log(info, "info?");
},
restoDetails: function() {
console.log('restoDetails', arguments);
},
list: function() {
console.log('list', arguments);
}
});
var lastElementClicked;
$(document).on('click', 'a[href^="/"]', function(e){
e.preventDefault();
lastElementClicked = $(this)
var href = lastElementClicked.attr('href');
Backbone.history.navigate(href, {trigger: true});
});
new R();
Backbone.history.start({pushState: true});