jquery插件将值发送给回调函数

时间:2013-04-20 11:11:39

标签: jquery jquery-plugins

我有一个jquery插件
假设显示警报
html页面为

<html>
<head>
<script src='jquery.js'></script>
<script src='myPlugin.js'></script>
<script>
 $().ready(function(){
   $(".txt").my-plugin({},function(e){
        alert(e.a +" "+ e.b);
    });
 });
</script>
</head>
<body>
   <input type='text' class='txt' />
   <input type='text' class='txt' />
   <input type='text' class='txt' />
</body>
</html>

我的插件如下

;(function ($) {
$.fn.myPlugin = function (options,callback) {       
  var defaultVal = {
  vars:'values'
  };
  var obj = $.extend(defaultVal, options);//overwrite default values if there
  return this.each(function(){
    //my other code
  $(this).click(function(){

    //my code

      var a="some value";
      var b="more values";
      if (typeof callback == 'function') 
      {
          callback.call($(this));//how can I send var a,b here
      }
   });
   })
   };   
 })(jQuery);

Q1:如何从插件中发送要在回调函数中访问的值?
    我必须发送属性值

Q2:如何在选项中放置回调函数?

1 个答案:

答案 0 :(得分:2)

应该是

$(".txt").alamStar({},function(e){
    alert(e.a +" "+ e.b);
});

因为函数名称是alamStar ...

这里有一些调整

$(function(){
   $(".txt").alamStar({
      callback: function(e){
        alert(e.a +" "+ e.b);
      }
   });
 });


;(function ($) {
$.fn.alamStar = function (options) {       
  var defaultVal = {
    vars: 'values',
    callback: null
   };

 var defaultVal = $.extend(defaultVal, options);//overwrite default values if there

 return this.each(function(){
  //my other code
  $(this).click(function(){

 //my code

  var a="some value";
  var b="more values";

  if (typeof defaultVal.callback == 'function') 
      defaultVal.callback({a:a, b:b});//how can I send var a,b here

  });
 })
};   
})(jQuery);