检查Backbone事件对象中this.el上的css类

时间:2013-02-16 23:38:01

标签: backbone.js backbone-events

events: {
    'click .pdf_preview' : 'onPreviewPdfClick',
    'click a.next' : '_nextPointer',
    'click a.prev' : '_prevPointer',
    'mouseleave .mediapop-item-container' : 'onMouseLeave',
    'mouseenter .mediapop-item-container' : 'onMouseEnter',
    // Editable events
    'click &.editable .dialog-header h3' : 'showEditTitleForm'  <--- this
},

我创建了一个具有编辑模式的弹出视图。虽然我可以使用可编辑的版本扩展此视图,但我需要的是非常基本的,所以我将其设置为如果您通过this.options.editableview.el元素将在其上设置“可编辑”类。

我想知道是否有办法在事件对象中指定选择器。这样,如果this.options.editable不是true,则不会触发事件。如果Backbone支持SASS样式选择器语法,那么上面的方法就可以了。唯一的选择是在showEditTitleForm内检查。$ el.hasClass('ediable')。

我知道你是否设置了这样的选择器:

'click' : 'myAction',

点击事件将应用于this.el容器。我希望只在附加类存在的情况下才应用回调。

是否可以在回调方法中添加检查而执行与上述类似的操作?

编辑:拼写错误

1 个答案:

答案 0 :(得分:1)

您可以随时在调用delegateEvents之前修改events,但请注意不要修改视图原型附带的events。像这样:

initialize: function() {
    if(this.options.editable) {
        this.events = _({}).extend(this.events, {
            'click .dialog-header h3': 'showEditTitleForm'
        });
    }
}

注意_({}).extend(...),它会将this.events(来自原型)和额外事件合并到一个空对象中,这样就不会意外地改变events中的{{1}}原型。

演示:http://jsfiddle.net/ambiguous/dNYXN/

相关问题