【问题标题】:On click get ajax request 4 times单击获取 ajax 请求 4 次
【发布时间】:2020-09-29 10:51:46
【问题描述】:

当我单击一次我在控制台上收到 4 个请求时遇到问题。像这样。

这是我的代码

var opener = listTreck.find('.row-holder');

opener.on('click.b touchstart.b', function() {

  refreshPosition();

  var self = jQuery(this);
  if (!self.parent().hasClass('active')) {
    openerParent.removeClass(activeClass);
    self.parent().addClass('active');
  } else if (self.parent().hasClass('active')) {
    openerParent.removeClass(activeClass);
  }

  if (!row.hasClass('details-open')) {
    colSlide.stop().animate({
      marginLeft: -slideWidth
    }, animeSpeed);
    trackDetails.stop().animate({
      marginLeft: -slideWidth
    }, animeSpeed, function() {
      row.addClass('details-open');
      resetStyle();
      colHidden.css({
        display: 'block',
        position: 'absolute',
        left: '0',
        marginLeft: -slideWidth
      });
    });
  }

  if (self.attr('data-src')) {
    var url = self.data('src');
    //var data = { _token: _globalObj._token };
    var data = {};

    if (isRoute('/favorites')) {
      data.f = true;
    }

    jQuery.ajax({
      url: url,
      type: 'GET',
      data: data,
      dataType: 'html',
      success: function(data) {
        ajaxHolder.hide().text('');
        var html = jQuery('<div>').html(data);
        html.appendTo(ajaxHolder);
        ajaxHolder.fadeIn('normal', function() {
          scrollTrackInfo();
        });

      },
      error: function() {
        if (window.lonsole) {
          console.log('ajax Error');
        }
      }
    });
  }
});

当我单击 .. 时,我遇到了控制台请求问题。为什么我的 ajax 调用了 4 次。我在此代码上正确获取了数据,但唯一的问题是……收到很多请求。 当我单击 .. 然后我在控制台请求上遇到问题。为什么我的 ajax 调用 4 次。我在此代码上正确获取了数据,但唯一的问题是……收到很多请求。 当我单击 .. 然后我在控制台请求上遇到问题。为什么我的 ajax 调用 4 次。我在此代码上正确获取了数据,但唯一的问题是...收到很多请求。

'980..': {
            on: function() {
                initTrackInfo();
                jQuery('.side-menu').each(function(){
                    var set = jQuery(this);
                    set.find('.scrollable-area').each(function(){
                        if(this.jcf) this.jcf.destroy();
                    });
                    jcf.customForms.replaceAll(set.get(0));
                });
            },

【问题讨论】:

  • 您可能多次添加了事件处理程序。
  • 您可以在循环中添加事件处理程序吗?您没有将 opener 设置为特定元素,它与整个类匹配,因此每次通过循环时,您都会为类的每个元素添加另一个侦听器。
  • 没有调酒师.......
  • 您是否在动态创建元素并在每次创建新元素时添加事件处理程序?对动态创建的元素使用事件委托。
  • @Barmar 我检查了所有内容......它们不是事件循环。

标签: php jquery laravel-5


【解决方案1】:
    I added e.stopImmediatePropagation();   on 

    opener.on('click.b touchstart.b', function() {

        e.stopImmediatePropagation(); 
    .........other Code........
  }
    It solved my issue.

【讨论】:

  • 你在哪里添加的?也请edit这个问题,以便只有代码是这样格式化的。
猜你喜欢
  • 1970-01-01
  • 2012-03-05
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 2019-12-10
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多