需要一个jquery闭包?

时间:2014-05-29 10:55:46

标签: javascript jquery function closures

您好我创建了一个jquery插件,它正在运行,但我希望我需要一个闭包来调用一个元素。

JsFiddle:http://jsfiddle.net/luiggi/uamL7/8/show - 全屏 JsFiddle:http://jsfiddle.net/luiggi/uamL7/8/ - 编辑视图

我这样称呼函数:

$('.mydiv').click(function(){
   $('table').addStylesTable({OwnClass:'christian'});
});

这是我的职责:

$.fn.addStylesTable = function(options) {

    var defaults = {

        tablestyle: 'table',
        tableHover: true,
        table100: true,
        table50: false,
        table33: false,
        NewClass: true,
        OwnClass: 'reverse2'

    };

    var options = $.extend({

        OwnClass: 'reverse'

    }, defaults, options);

    return this.each(function() {
        if (options.tableHover == true) {
            alert(options.OwnClass);
            $('table').addClass(options.OwnClass);
        };

    });
};

如果将来某人需要为其他元素调用此函数,他们将需要复制此函数,或者写一些if,case,switch ....

我想这样称呼:

  $('div').addStylesTable({OwnClass:'christian'}); // to modify the <div>
  $('p').addStylesTable({OwnClass:'christian'}); // to modify the <p>

有人知道,我该怎么做?

谢谢,Christian

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,只需要更改此行:

$('table').addClass(options.OwnClass);

这个:

$(this).addClass(options.OwnClass);

现在我可以使用这样的功能:

$('div').addStylesTable({OwnClass: 'christian'});$('body').addStylesTable({OwnClass: 'christian'});等......

非常感谢,Christian