javascript - 如何让事件监听器从另一个 div 中提取数据?
问题描述
我需要更改监听产品 div 中的类的事件,但我希望该函数仍然在产品 div 中提取数据.. 此刻它具有“this.open();” 所以它试图在 .available div 中找到数据(据我所知......),但显然不能。所以我需要事件监听器在点击 .available 时发生,然后搜索 this.DOM.product。
知道如何解决这个问题吗?我对DOM不太熟悉
class Item {
constructor(el) {
this.DOM = {};
this.DOM.el = el;
this.DOM.product = this.DOM.el.querySelector('.product');
this.DOM.productBg = this.DOM.product.querySelector('.product__bg');
this.DOM.available = this.DOM.product.querySelector('.available');
this.DOM.productImg = this.DOM.product.querySelector('.product__img');
this.info = {
img: this.DOM.productImg.src,
title: this.DOM.product.querySelector('.product__title').innerHTML,
subtitle: this.DOM.product.querySelector('.product__subtitle').innerHTML,
description: this.DOM.product.querySelector('.product__description').innerHTML,
price: this.DOM.product.querySelector('.product__price').innerHTML
};
this.initEvents();
}
open() {
DOM.details.fill(this.info);
DOM.details.open({
productBg: this.DOM.productBg,
productImg: this.DOM.productImg
});
}
initEvents() {
this.DOM.available.addEventListener('click', () => this.open());
}
};
解决方案
我怀疑您的问题是this
无法解决事件处理程序中的 Item 实例。这是因为事件处理程序不会自动绑定到任何东西。
this
如果这是问题所在,您可以通过在绑定事件处理程序时显式提供一个值来轻松解决它:
this.DOM.available.addEventListener('click', this.open, this);
addEventListener
我向;添加了第三个参数 该参数是可选的,并控制this
处理函数内的值。
注意:我还将您的处理程序从更改() => this.open()
为 just this.open
。原因是您无法取消绑定匿名事件处理程序,这意味着您当前的 impl 使拆卸变得不可能。
推荐阅读
- javascript - 格式化文本输入 onChange 以获得 HH:MM:SS
- javascript - 尝试在 rasa-webchat 中集成外部 javascript 代码时无法 addEventListener()
- swift - 当应用程序关闭时,如何从用户向用户发送推送通知?
- javascript - Bootstrap 5 模态和视频 js:addEventListener 错误
- amazon-web-services - 在 AWS 中将数据从服务器发送到客户端(Web、移动设备)的解决方案?
- numpy - 翻译 OpenCl 代码以进行 CPU 编译
- java - 使用 Spring 的 RESTful API 端点
- axios - 使用 jest 和 testing-library 在 react 组件中测试多个 axios 调用
- linux - 有什么方法可以将不同 webapps 的多个端口传递给单个 ip/域子页面
- c - 鼠标随 SendInput 飘走