从jQuery插件向this.each(function(){})内部调用函数

时间:2013-01-10 13:38:58

标签: javascript jquery

(function( $ ){

$.fn.foo = function(params) {

    params = $.extend( {
        on: false
    }, params);

    this.each(function(){
        if(params.on) {
            function alertDate(){
                alert('FOO BAR!!!');
            }
        }
    });
};
})( jQuery );

如何从脚本中访问“alertDate()”函数?

如果我使用:

$('#test').foo()

将允许我访问该函数,好的,一切正常,我将在this.each(function(){})内部访问函数“alertDate()”。

我希望通过以下方式从外部访问“alertDate()”函数:

$('#text').foo({on: 'true'}).each().alertDate();

我该怎么做?

提前致谢并对可怜的英语表示抱歉

2 个答案:

答案 0 :(得分:2)

以下是我将如何处理它,以便您的alertDate()函数可以在内部和外部使用:

$.fn.foo = function(params) {
    params = $.extend( {
        on: false
    }, params);

    this.alertDate = function(){
        alert("FOO BAR!!!");
    }

    this.each(function(){
        if(params.on) {
            this.alertDate();
        }
    });

    return this; 
};

//Externally the alertDate function could be called as:
$("test").foo().alertDate();

答案 1 :(得分:0)

你可以做这样的事情,但这不是插件正常工作的方式。

$.fn.foo = function() {
    function bar() { 
        alert("bar");
    } 
    this.bar = bar; 
    return this; 
};

$("a").foo().bar();