.on()中function(event)为什么event监听的不是指定的DOM?

    $("#post-buy-table").on("click", 'tr:gt(0)', function(event){
        alert(event.target.tagName);
    })

这里执行后alert应该是tr吧,执行后为什么是td?怎样给tr绑定事件?

阅读 3.1k
2 个回答

因为事件是从 td 点击开始冒上来的,直接被 #post-buy-table 抓住,并分析出来冒的过程中经过了 tr

jQuery 对 event.target 的解释是

The DOM element that initiated the event.

所以显示出来提 TD

想取得 TR 可以用 this,也可以用 event.currentTaget

alert(this.tagName);
alert(event.currentTaget.tagName);
// jQuery 的习惯用法是:
// alert($(this).get(0).tagName);
// 或者 $(this).get(0).prop("tagName");
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进