首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免在AJAX调用之后调用行为?

如何避免在AJAX调用之后调用行为?
EN

Drupal用户
提问于 2018-03-23 15:48:15
回答 1查看 782关注 0票数 0

我有一个搜索结果页面,在页面加载期间获取第一组数据,然后添加一个load按钮。单击此按钮将使用ajax_links_api模块触发AJAX调用。在AJAX调用完成后,我们会将更多的搜索结果附加到当前集合中。在读取URL参数时,我有一种行为;如果存在URL参数,则打开一个Colorbox。

如果颜色框在页面加载时打开,我们就关闭它,然后单击load More (这会激发AJAX);然后颜色框JavaScript再次被触发,我们再次看到弹出的效果。

我不想在AJAX完成/启动后触发JavaScript。

我试过一次jQuery,但没成功。

我怎样才能做到这一点?我能检测到AJAX调用何时发生吗?

下面是我正在使用的代码。

代码语言:javascript
运行
复制
Drupal.behaviors.openColorbox = {
  attach: function (context, settings) {
    if ($('body', context).hasClass('page-search-site')) {
      var nid = url('?node');
      if (nid != undefined) {
        if (nid.trim()) {
          $('div.search-result')
            .find('.node-' + nid)
            .once('colorbox-clicked')
            .click();
        }
      }
    }
  }
};
EN

回答 1

Drupal用户

发布于 2018-03-24 00:34:19

您在错误的位置使用.once

代码语言:javascript
运行
复制
(function($, Drupal) {

  "use strict";

  function openColorbox(context) {
    $(context).find("div.search-result").once("openColorbox").each(function () {
      if ($('body', context).hasClass('page-search-site')) {
        var nid = url('?node');
        if (nid != undefined) {
          if (nid.trim()) {
            $('div.search-result')
              .find('.node-' + nid)
              .click();
          }
        }
      }
    }
  }

  Drupal.behaviors.openColorbox = {
    attach: function (context) {
      openColorbox(context);
    }
  };

}(jQuery, Drupal));

请注意,这是D8风格。如果您正在使用D7,那么上面的操作将不会以不同的方式工作,并且您也没有告诉我们您使用的是哪个Drupal版本。

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/258369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档