1
的父母使用图形库像Font Awesome,按钮最后往往看起来像这样:jQuery的 - 事件扩展得到事件的目标或特定类型
<button>
<span class="fa fa-stack-overflow fa-lg"></span> Click me
</button>
当处理一个按钮事件,目标可以是跨度或按钮本身,取决于用户点击这里,所以我通常与这样的事情结束了:
$('button').on('click', function($event) {
var $target = $($event.target);
var $button = $target.is('button') ? $target : $target.closest('button');
// useful stuff goes here
}
是否有可能延长jQuery的事件对象添加封装此功能的方法,所以它可以这样调用?
var $button = $event.getSpecificTarget('button');
我创建了JSFiddle来演示此问题。
它可以使用普通的jQuery插件来实现,但它会觉得更清洁,如果它可以直接从事件对象通过这样的插件,而不是访问:
var $button = $.getSpecificTarget($event, 'button');
有趣...使用你的方法,event.target仍然是跨度,如果你点击那个,但$(this)总是返回按钮,不管你点击的是哪里。我一直使用event.target而不是$(this),因为我认为它更具可读性 - 我从未意识到它们之间存在差异。应该看过这个,我猜:http://stackoverflow.com/a/21667010/13153 –