【发布时间】:2021-03-26 07:40:18
【问题描述】:
我在添加 javascript 来处理自定义元素的事件时遇到问题。我在一个名为 menu.js 的 javascript 文件中定义了一个自定义元素,方法是将这个元素直接添加到 DOM,如下面的代码:
customElements.define("custom-menu", class extends HTMLElement {
connectedCallback() {
this.innerHTML = `
<header class="header">
<div class="header__menu">
<div class="header__menu_bar"></div>
<div class="header__menu_bar"></div>
<div class="header__menu_bar"></div>
</div>
</header>
<div class="modal2">
// some code HTML
</div>
<div class="modal__details">
// some code HTML
</div>`;
}
});
const header__menu = document.querySelector(".header__menu");
header__menu.addEventListener("click", function () {
document.getElementsByClassName("modal2")[0].style.width = "100%";
$("body").addClass("stop-scrolling");
$("body").removeClass("enable-scrolling");
if (document.body.offsetWidth <= "640") {
document.getElementsByClassName("modal-content")[0].style.width = "100%";
} else {
document.getElementsByClassName("modal-content")[0].style.width = "290px";
}
document.getElementsByClassName("modal-content")[0].style.right = "0";
});
// some code Javascript handle class "modal2" and "modal__details"
每次将自定义元素插入 DOM 时,我都会使用 connectedCallback() 函数调用。如果我像上面的代码一样直接添加 Javascipt 代码,我已经成功地将 click 事件添加到具有类“header__menu”的 div 并处理了两种模式。现在我想将customElements.defined(...); 之后的 Javascipt 代码放到另一个 Javascipt 文件中,并使用此元素将此文件链接到文件 HTML 以执行相同的任务,但它不像我直接添加时那样工作。有人可以告诉我原因吗?
谢谢!
【问题讨论】:
标签: javascript html jquery dom