在包含字符串的元素后添加文本

时间:2010-07-13 22:01:31

标签: javascript jquery dom

我想为Google Chrome编写一个扩展程序,用于检测网页上的源代码片段并自动将其复制到剪贴板。

我是javascript和jquery的新手,所以第一步,我想尝试一个非常简单的案例。

以此网站为例: http://www.swharden.com/blog/2010-03-05-realtime-fft-graph-of-audio-wav-file-or-microphone-input-with-python-scipy-and-wckgraph/

我想找到包含字符串“import”的元素,并在元素后添加文本“Here is some code”。有人能给我一个线索吗?

我的第一次尝试是$('*:contains("import ")').after("Here's some code");,但在每个元素之后插入,包括父母,当我只想在最低级别的孩子之后插入。

修改:我希望代码可以在任何网站上使用。所以我想找到任何包含“import”的元素。特定于示例站点的解决方案不是我正在寻找的。

2 个答案:

答案 0 :(得分:0)

在您的示例网站上为我工作

$(".prettyprint span:contains('import')").after(" Here's some code");

确保在语法完成语法完成后,此代码作为回调运行

答案 1 :(得分:0)

浏览页面上的每个文本节点并搜索查询 - "import"。如果匹配,则在"Here's some code"之后附加字符串parent()

$("body *").contents().filter(function() {
    if(this.nodeType != Node.TEXT_NODE) {
        return;
    }
    if(this.nodeValue.indexOf('import') == -1) {
        return;
    }
    $(this).parent().after("Here's some code");
});

使用您给出的示例,这将在每行代码后添加"Here's some code"。要找出代码的确切位置,您必须应用一些启发式方法。