如何在Javascript / Jquery中获取包含单击文本的元素?

时间:2013-02-25 21:09:16

标签: javascript jquery events javascript-events textnode

我想点击文字时替换页面上的文字,甚至只需更换单击的单词。我尝试了一种自上而下的方法来选择DOM中的所有元素,过滤掉textNodes,用标签包装每个元素并为每个标记添加一个click事件处理程序。但这非常缓慢且效率低下,尤其是在非常大且动态的站点上。

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

2 个答案:

答案 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树中的祖先来获取与选择器匹配的第一个元素。