编写一个jquery插件,在新窗口中打开一个链接

时间:2016-10-22 21:27:41

标签: javascript jquery html jquery-plugins window.open

我已经写了这个插件来打开新窗口的链接但是不起作用 什么可能出错?

(function( $ ) {
     $.fn.myPlugin = function() {
        var defaults = {
            width: 800,
            height: 700,
            scrollbars: 1,
            location: 1,
            status: 1       
        },
        self = this,
        opts = $.extend(defaults, options);
        this.filter('a').click(function() {
            $("a").attr("target","_self");
            window.open($(this).attr('href'),'title', opts);
            return this;
        });
    };

}( jQuery )); 
$('a').myPlugin();

2 个答案:

答案 0 :(得分:0)

而不是这个

   opts = $.extend(defaults, options);
   this.filter('a').click(function() {
        $("a").attr("target","_self");
        window.open($(this).attr('href'),'title', opts);
        return this;
    });

尝试:

opts = $.extend({}, defaults, options);

$('a').click(function(){
   window.open($(this).attr('href'),'title', opts);
});

Here您可以找到使用window.open()的示例。另请阅读doc

  

请记住,目标对象(第一个参数)将被修改,   并且还将从$ .extend()返回。但是,如果你想   保留两个原始对象,你可以通过传递一个   空对象作为目标:

     

var object = $ .extend({},object1,object2);

希望这对你有所帮助。

答案 1 :(得分:-1)

我认为你缺少扩展函数中的选项声明变量,第二个参数尚未定义。

(function( $ ) {
     $.fn.myPlugin = function() {
        var defaults = {
            width: 800,
            height: 700,
            scrollbars: 1,
            location: 1,
            status: 1       
        },
        options,   //<-------- This one right here !
        self = this,
        opts = $.extend(defaults, options);
        this.filter('a').click(function() {
            $("a").attr("target","_self");
            window.open($(this).attr('href'),'title', opts);
            return this;
        });
    };

}( jQuery )); 
$('a').myPlugin();

祝其他代码好运。

利奥。