Jquery - доступ к переменной извне плагина - PullRequest
1 голос
/ 16 марта 2011

Я получил простой плагин, как показано ниже:

$.fn.ajaxSubmit = function(options){
    var submisable = true;
}

Я хочу иметь возможность изменить / получить доступ к переменной myvar извне плагина, выполнив что-то вроде ниже:

$(function(){
    $('form').ajaxSubmit();
    $('div').click(function(){
        submisable =false;
    });
});

Ответы [ 3 ]

2 голосов
/ 11 июля 2013

Вы также можете создавать методы для доступа к переменным, которые находятся внутри плагина:

$.fn.ajaxSubmit = function(options){
    var submisable = true;

    $.fn.ajaxSubmit.setSubmissable = function(val){
       submisable = val;
    }

}

Тогда вы можете назвать это так.

$('form').ajaxSubmit();
$('form').ajaxSubmit.setSubmissable(false);
1 голос
/ 07 апреля 2011

Это решение не является простым, но следует рекомендациям плагина jquery.

(function($) {
    var myVar = "Hi";
    var methods = {
        init: function(option) {
            return this.each(function() {
                $(this).data("test", myVar);
            });
        },
        showMessage: function() {
            return this.each(function() {
                alert($(this).data("test"));
            });
        },
        setVar: function(msg) {

            return this.each(function() {
                $(this).data("test", msg);
            });
        },
        doSomething: function() { 
            //perform your action here
        }
    }

    $.fn.Test = function(method) {
        // Method calling logic
        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist on jQuery.Test');
        }
    };
})(jQuery);

$("form").Test("init");
$("#getCol").click(function() {
    $("form").Test("setVar", "Hello World").Test("showMessage");

});
0 голосов
/ 16 марта 2011

Думаете ли вы получить доступ к ним как к свойствам?Что-то вроде:


$.fn.ajaxSubmit = function(options) {
    var defaults = {},
    o = $.extend({}, defaults, options);
    var _myvar = 'blue'</p>

<pre><code>this.myvar = new function(){
  return _myvar;
}
this.setmyvar = function(_input){
  _myvar = _input
}

return this.each(function() {           

    if (_myvar == 'blue') {
        alert('hi');
    }
    if (_myvar == 'red') {
        alert('bye');
    }
});

}

И установить как:

this.setmyvar('red');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...