当我单击文本时,我想替换页面上的文本,甚至只是替换单击的单个单词。我尝试了一种自上而下的方法,选择 DOM 中的所有元素,过滤掉 textNodes,用标签包装每个元素,并向每个标签添加一个单击事件处理程序。但这太慢且效率低下,尤其是在非常大且动态的站点上。
我只需要替换被点击的文本。是否有从 event.target 开始的自下而上的方法?例如,如何找到最接近 event.target 的 textNode?
当我单击文本时,我想替换页面上的文本,甚至只是替换单击的单个单词。我尝试了一种自上而下的方法,选择 DOM 中的所有元素,过滤掉 textNodes,用标签包装每个元素,并向每个标签添加一个单击事件处理程序。但这太慢且效率低下,尤其是在非常大且动态的站点上。
我只需要替换被点击的文本。是否有从 event.target 开始的自下而上的方法?例如,如何找到最接近 event.target 的 textNode?
在您给出的示例中,您可以执行以下操作;有关更多信息,请参阅如何使用 jQuery 选择文本节点?
$(document).click(function(event) {
textNodes = $(event.target).contents().filter(function() {
return this.nodeType == 3;
});
textNodes.each( function() {
$(this).replaceWith("New Text");
});
})
你试过Jquery 的 .closest()吗?
描述:对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先来获取与选择器匹配的第一个元素。