js插件写法调用



<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<script src="http://cdn.bootcss.com/jquery/1.12.3/jquery.min.js"></script>
</head>
<body>
<button class="layui-btn demo1">测试1</button>
<button class="layui-btn demo2">测试2</button>

<script>


var my = {
  defaults: {
    id: ".fast_pay",
    client_id: '', //连接ID
    sign:"",//签名
    qr_load:null,
    success: null // 支付成功后调用
  },
  set: function(options) {
    var that = this;
    that.settings = $.extend({}, that.defaults, options);
    return that;
  },
  int: function(options) {
    var that = this;
    var that = this.set(options);
    settings=that.settings;
    $(document).on("click", settings.id, function() {
      that.shows_qr($(this));
    });
  },
  shows_qr: function(item) {
    var that = this;
    if (typeof settings.success === 'function') {
      settings.success(item);
      return false;
    }
  }
}



my.int({
id:".demo1",
success:function(data){
  alert("demo1");
  console.log("我是demo1的回调"+data);
}
});

my.int({
  id:".demo2",
  success: function(data) {
      alert("demo2");
    console.log("我是demo2的回调"+data);
  }
});




</script>
</body>
</html>

为什么老是回调到 demo2!!

这种写法应该怎么去写???

点击按钮..进行回调!

阅读 2.5k
2 个回答
var My = function(options){
    ...
}

var my1 = new My(...)
var my2 = new My(...)

你的settings是全局变量,自然只会有一种回调。

  1. 要把回调传给shows_qr
  2. 绑定不同的回调,用楼上的方法、闭包或者字典都行。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题