猿问

关于插件的写法,跟this的指向

var pay={

     int:function(options){

       var that = this;

       var settings = {

         id:".news a",

         yes:""

       };

      settings = $.extend(true, {}, settings, options);

       var elem = $(settings.id);

        elem.on("click",function(){

        $.ajax({

          type: "POST",

          dataType: "json",

          url:"",

          success: function(res) {

            if (typeof settings.yes === 'function') {

              //支付成功后返回

              settings.yes(data);

              return;

            }

          }


        })


       });


     }};

pay.int({

id:".news a",

yes:function(data){

  alert("回调成功");

  console.log(data);

}

});

第一个问题

为什么A标签点击后,会执行两次alert,不是应该等ajax完成后才alert? 点击后立即就执行alert ajax完成后又alert一次


第二个问题..


pay.int({

id:".news a",

yes:function(data){

  alert("回调成功");

  console.log(data);

}

});


settings = $.extend(true, {}, settings, options);

var elem = $(settings.id);


elem.on("click",function(){

这里的this 指向的是 news下面的A标签

})



$(document).on("click",elem,function(){

为什么这么写,this就指向了全局,怎么指向到id:".news a", 这个对象上

}); 


第三个问题..

有没有更好的写法...


下面是测试连接,绑定点击时间后获取不到title this指向是全局

http://sandbox.runjs.cn/show/...



慕容3067478
浏览 457回答 1
1回答

摇曳的蔷薇

1.有两次alert,我觉得应该是你的代码执行了两次,如果你的init重复执行是会在element上重复绑定事件的2.第二个问题,你的写法不对,第二个参数是个选择器,而不是个元素
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答