Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Backbone.js 主干事件被多次调用_Backbone.js - Fatal编程技术网

Backbone.js 主干事件被多次调用

Backbone.js 主干事件被多次调用,backbone.js,Backbone.js,我的脚刚被脊梁弄湿,我想我有一个很容易解决的问题。我有以下视图,这是一个简单的选项卡,当单击时打开一个面板,当关闭时返回到一个选项卡: myApp.views.Support = { Form: Backbone.View.extend({ initialize: function () { this.el = $('#support'); this._ensureElement(); },

我的脚刚被脊梁弄湿,我想我有一个很容易解决的问题。我有以下视图,这是一个简单的选项卡,当单击时打开一个面板,当关闭时返回到一个选项卡:

myApp.views.Support = {
    Form: Backbone.View.extend({
        initialize: function () {
            this.el = $('#support');
            this._ensureElement();
        },
        render: function () {
            if (this.$el.hasClass('support-panel')) {
                // close panel
                this.$el.empty();
                this.$el.removeClass('support-panel');
                this.$el.addClass('support-button');
            }
            else {
                // open and populate panel
                var template = _.template(myApp.utils.RenderTemplate('support/default'), {});
                this.$el.removeClass('support-button');
                this.$el.addClass('support-panel');
                this.$el.html(template);
            }

            return this;
        },
        closePanel: function () {
            alert('close event fired');
        },
        events: {
            'click #SubmitFormButton': 'submitForm',
            'click #CloseSupportPanel': 'closePanel'
        },
        submitForm: function (event) {
            alert('form submitted: ' + $('#message'));
        }
    })
}

一切正常,除了“closePanel”在每次单击事件发生时被触发+2次。我想这是我错过的某种清理,但我不知道是什么。

可能是因为事件正在冒泡。尝试返回
false

可能是因为事件正在冒泡。尝试返回
false

我知道这是一个老问题,但它帮助我意识到我的问题是什么。正如Daniel所说,返回false是可行的,但问题的根本原因是标记中有两次jQuery选择器,导致创建了两个jQuery对象,因此单击事件触发两次

我知道这是一个老问题,但它帮助我认识到我的问题是什么。正如Daniel所说,返回false是可行的,但问题的根本原因是标记中有两次jQuery选择器,导致创建了两个jQuery对象,因此单击事件触发两次

这很有效,但似乎不是最好的方法。我完全承认,我完全没有任何依据支持这种说法,也许这是处理这种情况的正确方法。你认为呢?这是正确的方法。这正是javascript的工作方式。这很有效,但似乎不是最好的方式。我完全承认,我完全没有任何依据支持这种说法,也许这是处理这种情况的正确方法。你认为呢?这是正确的方法。这就是javascript的工作方式。