2013-12-18 18 views
0

我需要的结果,就像这样:创建一个jQuery插件与价值的getter/setter

吸气

$('selector').myplugin().val(); 

二传手

$('selector').myplugin().val('value'); 

,我不希望结果像这样:

$('selector').myplugin({ value: 'value' }); 

​​

开始定义插件:

(function ($) { 
    $.fn.myplugin= function() { 
     return this.each(function() { 
     var $this = $(this); 
     ... 
     }); 
    }; 
}(jQuery)); 

这个问题 - How to create a jQuery plugin with methods?没有帮助..

+0

你使用val的'()'在这种情况下是混乱的,你不应该试图IMO覆盖jQuery的行为。链接的问题是正确的,几乎所有我看过的插件都是以这种方式工作的。 – jammykam

+1

@jammykam谢谢。我想我应该定义插件 - '$('selector')。myplugin();'然后设置/获得像这样的值 - '$('selector')。val();'/'$('selector') .val(“value”);'.. – mathewsun

回答

0

这个插件代码集,并在jQuery插件得到一个值。

;(function($) { 

    var myValue; 

    $.myplugin = { 

     myValue: function(value) { 

      if (typeof(value) != "undefined") { 
       myValue = value; 
      } else { 
       return myValue; 
      } 

     } 

    } 

})(jQuery); 


jQuery.myplugin.myValue("test"); 
alert($.myplugin.myValue()); 

jQuery.myplugin.myValue(10); 
alert($.myplugin.myValue()); 

小提琴:http://jsfiddle.net/ypE28/

+0

这是很好的解决方案。我的问题是错误的。 – mathewsun

+0

插件的多个实例将共享“myValue”属性。这可能是这里的意图,但通常情况并非如此。您需要确定变量的范围。 – jammykam