2012-01-17 254 views
1

如何从文档准备好中访问和设置插件中的变量。我在这里找到了一些关于stackoverflow的相关问题,但是他们并没有帮助我理解如何做到这一点。JQuery在插件中访问变量

谢谢!

(function($){ 
    $.fn.myPlugin = function(){ 
     var myVar1 = true; 
     var myVar2 = true; 
     var myVar3 = true; 

     .... 

     if(myVar1 == true){ 
     // do something 
     ... 
     } 

     .... 
    } 
})(jQuery); 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.fn.myPlugin.myVar1 = false; 
    }); 
</script> 
+0

这就是为什么你觉得这是 一个好主意?以这种方式插入插件不太可能产生理想的效果,通常有选项和回调来执行您想要的任何操作。这里的背景是什么? – Sinetheta 2012-01-17 22:58:58

+0

@Sinetheta我相信他的意思是他自己的插件 – Darcy 2012-01-17 23:00:30

+0

@Sinetheta要按照jquery手册完成默认设置和选项,我必须重写我的所有代码,我不知道从哪里开始。我是一个完整的新手。我认为访问一个变量并改变它的值将是一件非常简单的事情。几乎所有的答案都假设我知道我在做什么 - 如果是这样的话,我不会在这里... – user1002039 2012-01-17 23:14:13

回答

3

使用this而不是var

this.myVar1 = true; 
this.myVar2 = true; 

.... 
+0

我如何在我的if语句中引用这个?只需调用属性或this.propertyName?我尝试了两种方式,但没有奏效。谢谢 – user1002039 2012-01-17 23:03:58

+0

@ user1002039你应该可以这样做:'if(this.myVar1){...}' – Darcy 2012-01-17 23:09:39

1

为什么你需要调用它的插件外? 把你的变量,布尔选项,如果不是真或假,你建立一个不同的功能... 当你将在一个单独的文件中使用的插件,你会写:

$(document).ready(function() { 
     $('#id').myPlugin() { 
     //options 
     } 
    }); 

以这种方式,如果在你的选项您的变量将被设置为true或false将执行两个不同的功能...

顺便说一句,如果你需要调用该插件外的变量是这样的:我觉得好多问题

$('#id').data('myPlugin').option.foo; 
+1

这实际上是根据jQuery文档中的函数推荐的方法之一。 – MrBoJangles 2012-01-17 23:04:56

+0

这些变量被设置为默认值。我希望能够在使用插件时打开或关闭相关功能。 – user1002039 2012-01-17 23:06:04

+0

@ user1002039看看我的编辑。将您的变量存储到您想要的选项或设置中(plugin.settings = {//您的变量})并且您可以调用它。 – 2012-01-17 23:08:16