BackboneJS - 为什么要双击才能触发事件?

时间:2014-06-18 10:04:46

标签: javascript backbone.js magnific-popup

我有一个Backbone App,使用HandlebarsJS作为我的HTML模板。现在我有一个按钮来触发登录弹出框。我的问题是,我必须双击按钮/链接,直到弹出窗口打开。这是为什么??我正在使用Magnific Popup - 插件。也许它与此有关?

我的HTML看起来像这样:

<li>
   <a href="#" class="login">
      <span>Login</span>
   </a> 
</li>

在我的Backbone View中我有:

events: {
    'click .login': 'login',
},

login: function(e){
    e.stopPropagation();
    $('.login').magnificPopup({
            items: {
                src: '#loginbox',
                disableOn: 700,
                type: 'inline',
                mainClass: 'mfp-fade',
                removalDelay: 160,
                preloader: false,
                fixedContentPos: false
            },
            closeBtnInside: false
        });
 }

登录框本身位于登录链接所在的同一HTMl文件中。

任何人都可以帮助我吗?提前谢谢......

2 个答案:

答案 0 :(得分:1)

好的,我自己解决了:

$('.login').magnificPopup({
        items: {
            src: '#loginbox',
            disableOn: 700,
            type: 'inline',
            mainClass: 'mfp-fade',
            removalDelay: 160,
            preloader: false,
            fixedContentPos: false
        },
        closeBtnInside: false
    }).magnificPopup('open');

添加.magnificPopup('open');之后就可以了!!!

答案 1 :(得分:1)

e.stopPropagation();更改为e.preventDefault()。发生的事情是,第一次点击时,URL会变为“/#”,然后再次单击它,因为它已经在“/#”URL上,所以代码的其余部分就是动作。 e.preventDefault()将在#link。

后停止浏览器