【发布时间】:2021-12-01 04:46:39
【问题描述】:
对于包含文本的标签(td、p、li),我添加了一个data-id 属性。将鼠标悬停在具有data-id 属性的标签上时,需要显示该按钮。一切正常,除非标签是嵌套的,例如:
<li aria-level="1" data-id="66389178">
<p data-id="11168609">text</p>
</li>
此示例显示两个按钮,一个用于父级,一个用于子级。我添加了e.stopImmediatePropagation();,但这不适用于td。这是代码本身:
$('[data-id]').mouseenter(function (e) {
GodObj.btnadd = $('<button class="btn btn-outline-dark btn-note-tag">' +
'<i class=\'fa fa-commenting\' aria-hidden=\'true\'></i>' + '</button>');
$(this).append(GodObj.btnadd);
e.stopImmediatePropagation();
}).mouseleave(function () {
$(GodObj.btnadd).remove();
});
绘制两个按钮时的示例:
<td aria-level="1" data-id="66389170">
<p data-id="11168601">...</p>
</td>
内容是用户通过网站上的编辑器添加的,因此标签之间的嵌套级别没有严格的规定。
如何使按钮只渲染一次或为父元素或子元素渲染?
【问题讨论】:
-
应该触发哪一个:父母还是孩子?
-
没关系,主要是有人是一个,而不是同时
-
看看这是否适合你:jsfiddle.net/2anfL9j6
-
@Shikkediel,看起来真的有效!非常感谢您的帮助!这就是最后发生的事情。在答案中添加您自己的选项,以便我为它投票jsfiddle.net/wolf_den/2dn1kare
标签: jquery nested event-listener mouseenter