【问题标题】:Getting jQuery to work in Jetpack让 jQuery 在 Jetpack 中工作
【发布时间】:2009-05-31 17:39:20
【问题描述】:

我正在尝试使用 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); 
     });  
   }  

});

【问题讨论】:

    标签: javascript jquery firefox-addon firefox-addon-sdk


    【解决方案1】:

    我对jetpack不熟悉,但你的jquery似乎很乱。

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

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

    有关更多信息,请参阅此问题或 google 获取 jquery 文本节点: Find text string using jQuery?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多