Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击按钮上的图标字体图标(有时为文本)时不会触发Backbone.js事件_Javascript_Jquery_Events_Twitter Bootstrap_Backbone.js - Fatal编程技术网

Javascript 单击按钮上的图标字体图标(有时为文本)时不会触发Backbone.js事件

Javascript 单击按钮上的图标字体图标(有时为文本)时不会触发Backbone.js事件,javascript,jquery,events,twitter-bootstrap,backbone.js,Javascript,Jquery,Events,Twitter Bootstrap,Backbone.js,当点击带有图标字体(如图标)的按钮时,我的主干点击事件不会触发 一个视图(例如)如下所示: var NetworkStatusView = Backbone.View.extend({ template: _.template(Helper.view('network/status')), events: { 'click a': 'navigate' }, navigate: function (el) { Backbone.history.navigate($(el.targ

当点击带有图标字体(如图标)的按钮时,我的主干点击事件不会触发

一个视图(例如)如下所示:

var NetworkStatusView = Backbone.View.extend({
template: _.template(Helper.view('network/status')),
events: {
    'click a': 'navigate'
},
navigate: function (el)
{
    Backbone.history.navigate($(el.target).attr('href'), true);
    return false;
},
render: function ()
{
    this.$el.html(this.template(userlocation.toJSON()));

    return this;
}
navigate: function (el)
{        
    Backbone.history.navigate($(el.currentTarget).attr('href'), true);
    return false;
}
}))

在模板中,a“按钮”如下所示(是的,它是引导;):


你知道为什么这些事件会在点击按钮的边框、填充物和自由空间时触发,但在点击图标(有时在文本上)时不会触发吗

谢谢

试试这个

events: {
    'click .btn': 'navigate'
},
试试这个

events: {
    'click .btn': 'navigate'
},
那么:

events: {
    'click a, click a i': 'navigate'
}
那么:

events: {
    'click a, click a i': 'navigate'
}
对我有效的解决方案(感谢@nekaab!):

将el.target更改为el.currentTarget,使导航功能如下所示:

var NetworkStatusView = Backbone.View.extend({
template: _.template(Helper.view('network/status')),
events: {
    'click a': 'navigate'
},
navigate: function (el)
{
    Backbone.history.navigate($(el.target).attr('href'), true);
    return false;
},
render: function ()
{
    this.$el.html(this.template(userlocation.toJSON()));

    return this;
}
navigate: function (el)
{        
    Backbone.history.navigate($(el.currentTarget).attr('href'), true);
    return false;
}
希望这会有所帮助:)-再次感谢您的回答

对我有效的解决方案(感谢@nekaab!):

将el.target更改为el.currentTarget,使导航功能如下所示:

var NetworkStatusView = Backbone.View.extend({
template: _.template(Helper.view('network/status')),
events: {
    'click a': 'navigate'
},
navigate: function (el)
{
    Backbone.history.navigate($(el.target).attr('href'), true);
    return false;
},
render: function ()
{
    this.$el.html(this.template(userlocation.toJSON()));

    return this;
}
navigate: function (el)
{        
    Backbone.history.navigate($(el.currentTarget).attr('href'), true);
    return false;
}

希望这会有所帮助:)-再次感谢您的回答

还有其他活动吗?可能会触发其他事件,因此此事件从未“看到”单击。我只是注意到:事件有时会被触发,但会出错,您(在链接示例中)会被拉到主视图(路由器主路由/)…不。在此特定视图中,没有其他事件…-在其他视图中,我有一些类似的事件,但所有事件都是通过Backbones eventDelegate完成的……还有其他事件吗?可能会触发其他事件,因此此事件从未“看到”单击。我只是注意到:事件有时会被触发,但会出错,您(在链接示例中)会被拉到主视图(路由器主路由/)…不。在此特定视图中,没有其他事件…-在其他视图中,我有一些类似的事件,但所有事件都是通过Backbones eventDelegate完成的…谢谢。我已经尝试给链接一个类,但这也没有解决我的问题(事实上,它没有改变这种行为的任何东西)…感谢这一点。我已经尝试给链接一个类,但这也没有解决我的问题(事实上,它没有改变这种行为的任何东西)…谢谢!这也不行。但现在我有了一个线索,为什么这是如此错误。单击事件本身会被触发,但如果您单击i,则事件的目标不是a,而是i元素,该元素没有href属性,因此无法转发到正确的路由。在实现解决方案后,您是否可以在此处发布自己的解决方案作为答案?我觉得我迟早会遇到这个问题。我会很高兴投票的!谢谢你!这也不行。但现在我有了一个线索,为什么这是如此错误。单击事件本身会被触发,但如果您单击i,则事件的目标不是a,而是i元素,该元素没有href属性,因此无法转发到正确的路由。在实现解决方案后,您是否可以在此处发布自己的解决方案作为答案?我觉得我迟早会遇到这个问题。我会很高兴投票的<代码>$(el.target)。最近的('a')。attr('href')将是另一种选择。有时使用
最近的
是有意义的,特别是当您在公共容器上使用数据属性来保存数据位时。很好。我不知道jQuery的最近()函数。谢谢:)<代码>$(el.target)。最近的('a')。attr('href')
将是另一种选择。有时使用
最近的
是有意义的,特别是当您在公共容器上使用数据属性来保存数据位时。很好。我不知道jQuery的最近()函数。谢谢:)!