我有一个搜索结果页面,在页面加载期间获取第一组数据,然后添加一个load按钮。单击此按钮将使用ajax_links_api模块触发AJAX调用。在AJAX调用完成后,我们会将更多的搜索结果附加到当前集合中。在读取URL参数时,我有一种行为;如果存在URL参数,则打开一个Colorbox。
如果颜色框在页面加载时打开,我们就关闭它,然后单击load More (这会激发AJAX);然后颜色框JavaScript再次被触发,我们再次看到弹出的效果。
我不想在AJAX完成/启动后触发JavaScript。
我试过一次jQuery,但没成功。
我怎样才能做到这一点?我能检测到AJAX调用何时发生吗?
下面是我正在使用的代码。
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();
}
}
}
}
};
发布于 2018-03-24 00:34:19
您在错误的位置使用.once
(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版本。
https://drupal.stackexchange.com/questions/258369
复制相似问题