2013-02-25 159 views
1

我想在点击文字时替换页面上的文字,甚至只是替换单击的单词。我尝试了一种自顶向下的方法,选择DOM中的所有元素,过滤出textNodes,用标签包装每个元素,并为每个标签添加一个单击事件处理程序。但是这太慢而且效率太低,特别是在非常大的动态网站上。如何获取包含Javascript/Jquery中单击文本的元素?

我只需要替换被点击的文本。是否有从event.target开始做这件事的自下而上的方式?例如,如何找到最接近event.target的textNode?

回答

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"); 
    }); 
}) 
+0

谢谢我已经去了这个,但不知道什么是错的。 http://jsfiddle.net/qqm9a/2/ – user759885 2013-02-25 22:07:18

+0

你这样做的方式有点令人费解,但这是它将如何工作:http://jsfiddle.net/qqm9a/3/ – 2013-02-25 22:18:12

+0

我改变了我的问题根本不使用'div',并且代码位于JSFiddle中,请尝试。它适用于你的span,div等等。 – 2013-02-25 22:35:11

-1

你试过Jquery's .closest()

描述:对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先来获取匹配选择器的第一个元素。

相关问题