在Drupal 9网站上工作,并尝试向页面添加一些自定义JS代码。
Drupal.behaviors.syfyGlobalHideMenu = {
attach: function (context, settings) {
$('.nav-flyout', context).once('remove-modals', function () {
$(document).keyup(function (e) {
if (e.keyCode == 27) {
$('.nav-flyout', context).removeClass('js-flyout-active');
}
});
});
}
};
想知道是否有一个vanilla JS等效于上面的jQuery .once功能?目前Drupal多次附加事件侦听器,我试图避免这种情况,因为我只想附加一次事件侦听器,但每次调用事件时都保持附加并运行。
let intervalID = null;
const search = document.querySelector(".call-us-table input#edit-search");
search.addEventListener("keydown", event => {
form.setAttribute("onsubmit", "return false");
clearInterval(intervalID);
});
search.addEventListener("keyup", event => {
intervalID = setInterval(submitForm, 2000);
});
2条答案
按热度按时间wgeznvg71#
Jquery一旦添加了一个html属性来检查是否是第一次运行。
fhity93d2#
从9.2开始,Drupal就有了
core/once
库,就是为了这个目的。要使用它,您需要向libraries.yml添加依赖项,如下所示:
然后在
my_search.js
中: