1

我正在试验 Jetpack,我想在给定的 html 页面中解析所有年份,然后用指向 Wiki 页面的链接包装年份。我在 jquery 中尝试了代码,它在那里工作,但现在我在 Jetpack 中使用它,它给出了一个错误 $(doc).replace is not a function。我绝对是 Jquery / Jetpack 的新手,所以也许我错过了一些非常简单的东西,但非常感谢您的帮助。

编辑:我已经尝试了这些建议,但我仍然卡住了。奇怪的是,这

JQuery 函数的工作原理:

(function($) {
    $.fn.clickUrl = function() {  
            var regexp = /([1-2][0-9][0-9][0-9])/gi;
            this.each(function() {
            $(this).html(
                  $(this).html().replace(regexp,'<ahref=\"http://nl.wikipedia.org/wiki/$1\">$1<\/a>')
            );
        });
    return $(this);
    }
})(jQuery);

基本上,我想将此功能“移植”到 Jetpack。

这是我的 JQuery 函数到 Jetpack 的“旧”非工作端口:

jetpack.statusBar.append({  
    html: "Hyperlink Years",  
    width: 80,  
    onReady: function(widget){  
        $(widget).click(function(){  
        var regexp = /([1-2][0-9][0-9][0-9])/gi;
        var doc = jetpack.tabs.focused.contentDocument;
            $(doc).each(function() {
            $(this).html(
                    $(doc).replace(regexp,'<a href=\"http://nl.wikipedia.org/wiki/$1\">$1<\/a>'));
            });
       return $(doc); 
     });  
   }  

});
4

1 回答 1

3

我不熟悉喷气背包,但你的 jquery 似乎很乱。

如果“doc”是 HTML 文档,那么执行 $(doc).each() 就没有任何意义。它只会循环一次,并且“this”将与 doc 相同。

然后稍后您正在执行 $(doc).replace(regexp, ...),但 replace() 不是 jquery 函数。你可能想做 .html().replace(regexp, ...); 但是,我不建议这样做,因为它不起作用 - 您最终只会替换文档中的任何数字,即使它们是另一个 URL 或页面 HTML 的一部分。

有关更多信息,请参阅此问题或 google 获取 jquery 文本节点: 使用 jQuery 查找文本字符串?

于 2009-05-31T20:16:45.373 回答