Javascript 我的职能';s单击两次链接/按钮时,单击仅会触发

Javascript 我的职能';s单击两次链接/按钮时,单击仅会触发,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试使用JavaScript/jQuery通过instagram API获取instagram关注者数量 有多个输入字段,每个字段都有一个on按钮来获取追随者数量。我希望每个输入字段都与单击的按钮有关 下面是返回跟随者计数的代码,我使用click函数绑定了该计数,但由于某些原因,“click-even”仅在我第二次单击锚/链接时触发 function login_callback() { jQuery('.btn-instagram').click(function (e) {

我正在尝试使用JavaScript/jQuery通过instagram API获取instagram关注者数量

有多个输入字段,每个字段都有一个on按钮来获取追随者数量。我希望每个输入字段都与单击的按钮有关

下面是返回跟随者计数的代码,我使用click函数绑定了该计数,但由于某些原因,“click-even”仅在我第二次单击锚/链接时触发

function login_callback() {
    jQuery('.btn-instagram').click(function (e) {
        e.preventDefault();

        var $t = jQuery(this);
        var $prevFolw = jQuery(this).prev('instaFollowers').val();
        jQuery.ajax({
            url: 'https://api.instagram.com/v1/users/self',
            dataType: 'jsonp',
            type: 'GET',
            data: {
                access_token: accessToken
            },
            success: function (data) {
                var follows = data['data']['counts']['followed_by'];
                var link = data['data']['username'];

                alert($prevFolw);

            },
            error: function (data) {
                console.log(data);
            }
        });
    });
}

它应该在第一次单击时显示警报。

在第一次单击之前,您的按钮没有
单击事件,而在第一次单击之后,它有事件,这就是为什么它在第二次单击中工作。将
。单击()
放在函数外部,并将您的
登录\u回调()
放在
成功
错误
函数中

function login_callback(data) {
  if (data == 'error') {
    alert('Login error!');
  }
  else {
    alert(data); // $prevFolw
  }
}

jQuery('.btn-instagram').click(function(e) {
  e.preventDefault();

  var $t = jQuery(this);
  var $prevFolw = jQuery(this).prev('instaFollowers').val();
  jQuery.ajax({
    url: 'https://api.instagram.com/v1/users/self',
    dataType: 'jsonp',
    type: 'GET',
    data: {
      access_token: accessToken
    },
    success: function(data) {
      var follows = data['data']['counts']['followed_by'];
      var link = data['data']['username'];

      //alert($prevFolw);
      login_callback($prevFolw); // <-- the callback

    },
    error: function(data) {
      console.log(data);
      login_callback('error'); // <-- the callback
    }
  });
});
函数登录\u回调(数据){
如果(数据=='错误'){
警报('登录错误!');
}
否则{
警报(数据);//$prevFolw
}
}
jQuery('.btn instagram')。单击(函数(e){
e、 预防默认值();
var$t=jQuery(本);
var$prevFolw=jQuery(this.prev('instaFollowers').val();
jQuery.ajax({
网址:'https://api.instagram.com/v1/users/self',
数据类型:“jsonp”,
键入:“GET”,
数据:{
访问令牌:访问令牌
},
成功:功能(数据){
var follows=data['data']['counts']['u后跟'];
var link=data['data']['username'];
//警报($prevFolw);

login_callback($prevFolw);//通过将两个函数绑定到一个函数中,我自己解决了这个问题

        jQuery(document).ready(function(){

     jQuery(".btn-instagram").click(function () {
     $th = jQuery(this);
        authenticateInstagram(
            'YOUR_INSTAGRAM_ID', //instagram client ID
            'YOUR_URL', //instagram redirect URI


   function (){ jQuery.ajax({
      url: 'https://api.instagram.com/v1/users/self',
      dataType: 'jsonp',
      type: 'GET',
      data: {
        access_token: accessToken
      },
      success: function(data) {
        var follows = data['data']['counts']['followed_by'];
        var link = data['data']['username'];

   $th.parent('.instagram-row').find('.instaFollowers').val(follows);
   $th.parent('.instagram-row').find('.instaURL').val(link);

   console.log($th.parent('.instagram-row').find('.instaFollowers').val());
  console.log($th.parent('.instagram-row').find('.instaURL').val(link));

      },
       error: function(data) {
  console.log(data);
      }
  })
  }         );

        return true;

        })
             });

谢谢大家的帮助。

为什么不简单地重新启动事件处理程序?为什么将其包装在函数中?您正在调用login\u callback(),然后调用两次正确的事件??哦,还有什么解决方案吗?将
处理程序移到
login\u callback()之外
function调用函数的位置或函数的定义位置?谢谢@ewlink,但它返回“undefined”,而我想显示success函数中“data”变量的值。
undefined
哪一行?要显示数据,在success函数中只需更改
login\u callback($prevFolw)
to
login\u callback(data)
无论我在函数中传递什么,它都会在按钮中返回“undefined”您调用的
login\u callback()如果你看到我的帖子和评论,我已经提到登录函数首先调用Instagram api,然后“login_callback()”被称为callback。