2011-10-06 43 views
0

我写一个jQuery插件,但它始终是这里返回Object对象是里面的代码:我的jQuery插件总是返回Object对象

$.fn.plugin = function(options) { 

      var defaults = { 
      rules : [] 
      }  
      var options = $.extend(defaults, options); 
      return this.each(function() { 
       var o = options; 
       var rules = o.rules; 
       var i=0; 
       var isValable = true; 
       var string = ""; 
       for (i=0;i<=((rules.length)-1);i++) 
        { 
         $('.'+rules[i][0]).each(function(index) { 
          var val = $(this).val(); 
          var $elm = $(this); 
          if(!(rules[i][2](val, $elm))) 
          { 
           if (!$elm.hasClass('validation-failed')) $elm.addClass('validation-failed'); 
           $elm.after('<div class="validation-advice" id="advice-' + rules[i][0] + '-' + $elm.attr('id') +'" style="display:none">' + rules[i][1] + '</div>'); 
           isValable = false; 
          } 
          else if (!$elm.hasClass('validation-passed')) $elm.addClass('validation-passed') ; 
         }); 
        } 
      return isValable; 
      }); 
     } 

调用alert($('myselector').plugin()) 感谢您的帮助

当我得到的Object对象
+0

我们需要看到更多的代码,你如何获得对象对象?你在使用警报吗? –

+0

请给我们更多的细节来帮助你! – JellyBelly

回答

0

我时,p由于双倍回报,第一个解决了它!

0

不知道这是否是问题,因为你没有告诉你是如何调用该插件,但它应该是

return $(this).each(function()... 
+0

对不起,这是完全错误的。我没有意识到,直到我更仔细地阅读这里:http://docs.jquery.com/Plugins/Authoring 从我理解的文档中,你实际上不需要包装你的函数在返回这个。每()。这用于将要修改的元素集合传递给链中的下一个方法。既然你只是试图返回一个值,只要使用你没有包装它的代码就可以返回this.each()。 – malificent

+0

如果答案错误,请将其删除。 –

+0

我打算起初,但自从我找到了正确的答案后,我觉得我应该加上一个正确答案的解释,解释为什么我的答案是错误的,它是如何与正确的答案相关的。 – malificent