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