特定对象的方法(非原型)

时间:2011-06-12 17:53:07

标签: jquery-plugins

我想写一个可以按以下方式使用的插件:

var img = $('#someImage').Image();

或者也许:

var img = $.Image({id: 'someImage', src: '/...'});

然后能够做与图像相关的功能:

img.highlight();
img.showAlter();

等等。但是,我不想这样做:

$.fn.highlight = function() {}

因为那将适用于所有jQuery对象,我希望我的方法只应用于我称之为.Image()的那些对象。

是我要求的可能吗?如何?

2 个答案:

答案 0 :(得分:1)

您需要将Image功能放在原型(fn)上,然后让Image插件分配highlightshowAfter函数调用.Image()的特定jQuery对象。

(function( $ ) {
    $.fn.Image = function( props ) {
        this.highlight = function(){
            this.each(function() {
                $(this).css('border', "5px dashed yellow");
            });
        };
        this.showAfter = function(){};
        return this;
    };
})( jQuery );


var img = $('img').Image();

img.highlight();

编辑:

为了澄清,this函数中的Image是对调用Image()的jQuery对象的引用。

this 以任何方式引用Image函数。

示例: http://jsfiddle.net/saYLm/

答案 1 :(得分:0)

$。fn.image.highlight = function(){}

假设你已经编写了一个名为image的插件,这将把高亮函数原型化为该对象