写jquery插件的callback函数

初写jquery插件很多不太明白,

//写插件
;(function($){
   $.fn.xtab = function(setting,callback){
   var abc = 123456;
   var setting = setting;
   var abcFunc = function(){alert(123456)};
   var callback = function(){}; 
}
})(jQuery);
//使用插件
$(".element").xtab({
    setting: {},
    callback: function(){cosle.log(abc)}
})

要怎么样写,使用插件时候的callback才能得到插件内部的变量和方法

阅读 11.6k
3 个回答

你这代码看着好诡异。方法内又重新复制变量,那还要参数来干嘛。ps:好像还打错api单词哦


//写插件
;(function($){
   $.fn.xtab = function(obj){//看你下面调用时传的参数是对象
   var abc = 123456;
   obj.callback(abc);
}
})(jQuery);
//使用插件
$(".element").xtab({
    setting: {},
    callback: function(a){console.log(a)}
})

根据你的插件定义方式
$.fn.xtab = function(setting,callback)
xtab 方法应该可以接收两个参数:setting (配置参数) 和 callback (回调函数)。

因此你应该如此调用:
$(".element").xtab({}, function(){cosle.log('this is callback');});

如果你想要在 callback 中使用 setting 或者 插件中的其他参数和方法,则需要在callback 调用的时候,将参数传入:

javascript$.fn.xtab = function(setting, callback){
    var $this = $(this);
    // 将配置参数缓存在当前 jquery 对象上
    $this.data('xtab-setting', setting);
    $this.data('xtab-callback', callback);
    // 假设点击时,调用 callback,并且传入配置参数
    $this.click(function(){
        callback($this.data('xtab-setting').value);
    });
}
//调用:
$('.div').xtab({value:'test'}, function(val){console.info(val);});

以上只是例子。

应该这么调用吧?

$(".element").xtab({}, function() {
cosle.log(abc);
})

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题