2012-08-06 135 views
1

我有2個元素,一個嵌套在另一箇中。 (它是一個模態對話框)。當用戶點擊外部元素時,應該觸發功能closeModal,如果用戶點擊內部元素(其子元素)中的li,則應觸發另一個函數like點擊事件排除兒童(backbone.js)

問題:我看着其他solutions並試圖申請我的backbone.js查看,但它似乎並沒有工作。有什麼不同的東西需要改變嗎?

查看

ModalShowItemView = Backbone.View.extend({ 
    el: '#modal_show_item', 

    events: { 
     'click div#modal': 'closeModal', 
     'click li#like' : 'like' 
    }, 

    initialize: function() { 
     this.render(); 
     this.clickHandler(); 
    }, 

    render: function() { 
     $(this.el).show().append(this.template(this.model.toJSON())); 
    }, 

    clickHandler: function() { 
     var self = this; 
     $(this.el).click(function(e) { 
      if(e.target == self) { 
       self.closeModal(); 
      } 
     }); 
    }, 

    closeModal: function() { 
     console.log('closemodal'); 
    }, 

    like: function() { 
     console.log('like'); 
    } 
}); 
+0

你必須做event.preventDefault(); return false;裏面就像這樣事件不會冒泡...所以在這種情況下,當用戶點擊外部div時,他點擊內部div時會調用closeModal,就像被調用並且事件不會傳播一樣... – 2012-08-06 14:52:14

回答

0

你的其他solutions一提的是可能你需要做什麼,除了事件對象本身做一個.stopPropagation()event.stopPropagation()。我不知道通過delegateEvents綁定的事件處理程序會傳遞任何相關的事件對象,但它不記錄在幫助頁面AFAIK上。