簡體   English   中英

如何防止孩子點擊事件冒泡給父母?

[英]How can I prevent child click event bubbling to parent?

我是Backbone的新手,這是我的情況:

我有一張桌子,我希望每行在單擊時都突出顯示。 每個單元格還包含一些超鏈接。 問題是當我嘗試單擊鏈接時,單元格也被突出顯示,這不是我想要的。 我可以找到一種解決方法,將一個'click'事件綁定到所有超鏈接(請參閱下面的'dummy'函數),然后使用e.stopPropagagtion()。 那行得通,但是似乎這不是一個干凈的方法,有什么建議嗎? 謝謝!

樣品

這是我的表格行視圖

app.UserRowView = Backbone.View.extend({
  el: '',
  tagName:'tr',
  className:'badge-user-row',
  template: twig({ data: $("#jsid-table-row").html() }),
  model: null,
  events: {
    'click' : 'rowClicked',
    'click a': 'dummy',
  },
  initialize: function(user) {
    this.model = user;
    this.listenTo(this.model, 'change', this.render);
  },
  render: function() {
    var html = this.template.render({ user: this.model.toJSON() });
    this.$el.html(html);
    return this;
  },
  rowClicked: function(e) {
      console.log(e.currentTarget);
      this.$el.toggleClass('row-selected');
  },
  dummy: function(e) {
    e.stopPropagation();
  }
});

而我的表格行模板:

    <td class="badge-cell"><input type="checkbox"></input></td>
    <td class="badge-cell">
      <div>{{ user.name }}</div>
      <a href="javascript:void(0)">Link 1</a>
    </td>
    <td class="badge-cell">
      {{ user.age }}
      <a href="http://google.com.hk">Link 2</a>
    </td>

如何在您的jQuery選擇器中包含一個not呢?

$("#jsid-table-row:not(a)").html()

 rowClicked: function(e) { console.log(e.currentTarget); if($(e.target).is("a") { this.dummy() } else { this.$el.toggleClass('row-selected'); } }, 

並刪除“'click a':'dummy'”部分。 我認為它將起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM