JS:带图标的按钮的事件目标

use*_*695 2 javascript jquery meteor

我只需要为这个 HTML 定义一个点击事件:

<button data-method="rotate" class="btn btn-default">
    <i class="fa fa-rotate-left"></i>
</button>
Run Code Online (Sandbox Code Playgroud)

html

Template.page.events({
    'click button': function (event) { 
        var $button     = $(event.target),
            method      = $button.attr('data-method');
    }
});
Run Code Online (Sandbox Code Playgroud)

但是现在有一个问题,这只有在用户不点击 fa 图标时才有效,因为事件目标是不同的。在这种情况下method将是未定义的。我怎样才能防止这种情况?

Sus*_* -- 6

为什么不只是

$(this)   // or $(e.currentTarget)
Run Code Online (Sandbox Code Playgroud)

代替

$(event.target)
Run Code Online (Sandbox Code Playgroud)

event.target将您指向触发事件的实际元素。但是在您的情况下,您希望它成为一个按钮及其所有后代元素。

  • 然后你可以使用`$(e.currentTarget)` (4认同)