Объем настроек плагина jQuery передан в - PullRequest
1 голос
/ 05 октября 2009

Я чувствую, что это, должно быть, спросили, но я не могу найти его в моих поисках.

Вот полный пример проблемы, которая меня смущает:

<html><head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
(function($){
    $.fn.testPlugin = function(options){
    settings = $.extend({val : "default"}, options);
    return this.each(function(){
        $(this).click(function(e){ 
        e.preventDefault();
        console.log(settings.val);
        });
    });
    }
 })(jQuery);

$(document).ready(function(){
    $('a#a1').testPlugin();
    $('a#a2').testPlugin({val : 'new val'});

});
</script>
</head><body>
<a href="#" id="a1">A1</a>
<a href="#" id="a2">A2</a>
</body>
</html>

Нажав на любую ссылку, вы зарегистрируете «new val» на вашей консоли firebug. Вы, вероятно, можете себе представить, что я хочу, чтобы первая ссылка сохраняла настройки по умолчанию, а вторая - мои перезаписанные настройки. Должен быть стандартный шаблон для достижения этого для плагина?

1 Ответ

5 голосов
/ 05 октября 2009

Я думаю, вам нужно использовать var, чтобы сохранить переменную settings в области видимости. Попробуйте:

 $.fn.testPlugin = function(options){
        var settings = $.extend({val : "default"}, options);
        return this.each(function(){
            $(this).click(function(e){ 
                e.preventDefault();
                console.log(settings.val);
            });
        });
    }
...