我想在点击文字时替换页面上的文字,甚至只是替换单击的单词。我尝试了一种自顶向下的方法,选择DOM中的所有元素,过滤出textNodes,用标签包装每个元素,并为每个标签添加一个单击事件处理程序。但是这太慢而且效率太低,特别是在非常大的动态网站上。如何获取包含Javascript/Jquery中单击文本的元素?
我只需要替换被点击的文本。是否有从event.target开始做这件事的自下而上的方式?例如,如何找到最接近event.target的textNode?
我想在点击文字时替换页面上的文字,甚至只是替换单击的单词。我尝试了一种自顶向下的方法,选择DOM中的所有元素,过滤出textNodes,用标签包装每个元素,并为每个标签添加一个单击事件处理程序。但是这太慢而且效率太低,特别是在非常大的动态网站上。如何获取包含Javascript/Jquery中单击文本的元素?
我只需要替换被点击的文本。是否有从event.target开始做这件事的自下而上的方式?例如,如何找到最接近event.target的textNode?
在您给出的示例中,您可以执行以下操作;更多信息请参见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");
});
})
描述:对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先来获取匹配选择器的第一个元素。
谢谢我已经去了这个,但不知道什么是错的。 http://jsfiddle.net/qqm9a/2/ – user759885 2013-02-25 22:07:18
你这样做的方式有点令人费解,但这是它将如何工作:http://jsfiddle.net/qqm9a/3/ – 2013-02-25 22:18:12
我改变了我的问题根本不使用'div',并且代码位于JSFiddle中,请尝试。它适用于你的span,div等等。 – 2013-02-25 22:35:11