我在反应表包中生成了一个引导按钮(一个删除文档按钮):
<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键传递给函数?
答案 0 :(得分:1)
首先,Meteor为您提供了jQuery,因此您可以使用它来简化DOM的处理。
data-docid
参数逻辑上属于button
元素,无需将其移至span
。
由于您已经提到 e.target
可以是按钮内 元素,因此您需要在获取数据之前先找到该按钮。所以实际的行将是:
$(e.target).closest('button').data('docid');
击> <击> 撞击>
由于您已经提到e.target
可以是按钮内的 元素,因此您可以使用currentTarget
来获取您所在的元素1}。已将处理程序附加到。所以更新的行将是:
$(e.currentTarget).data('docid');
另请注意,事件处理程序中的this
上下文与按钮周围的Handlebars数据上下文相同。因此,如果您实际从数据生成docid
值,则可以通过处理程序中的this
关键字访问它。