1


アラート
HTMLページが 次のように表示されると想定するjqueryプラグインがあります

<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: オプションにコールバック関数を配置するにはどうすればよいですか?

4

1 に答える 1

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);
于 2013-04-20T11:31:59.457 に答える