将参数传递给事件处理程序

时间:2014-08-15 06:19:41

标签: jquery meteor

我在反应表包中生成了一个引导按钮(一个删除文档按钮):

<button type="button" class="btn btn-danger remove"><span class="glyphicon glyphicon-trash" data-docid="kmDk4qQBwLpbXPDdA"></span></button>

为了保持逻辑与html分离,我需要在data-docid节点中获取密钥,然后删除文档。我打算通过event.target.innerHTML来解析内容,但是如果用户点击按钮元素一切都很好,但是如果鼠标指针移动到实际的 glyphicon -trash span 并且用户点击它,innerHTML为空。

任何人都可以推荐如何定位按钮并获取data-docid节点,以便每次都能正常工作?或者是否有另一个地方我可以通过事件处理程序将data-docid键传递给函数?

1 个答案:

答案 0 :(得分:1)

首先,Meteor为您提供了jQuery,因此您可以使用它来简化DOM的处理。

data-docid参数逻辑上属于button元素,无需将其移至span

由于您已经提到e.target可以是按钮内 元素,因此您需要在获取数据之前先找到该按钮。所以实际的行将是:

$(e.target).closest('button').data('docid');

<击>

由于您已经提到e.target可以是按钮内的 元素,因此您可以使用currentTarget来获取您所在的元素

$(e.currentTarget).data('docid');

另请注意,事件处理程序中的this上下文与按钮周围的Handlebars数据上下文相同。因此,如果您实际从数据生成docid值,则可以通过处理程序中的this关键字访问它。