我可以将 class 选择器从 jQuery 传递到 JavaScript 吗?
Can I pass a class selector to JavaScript from jQuery?
我有一个巨大的 UI,包含超过 10,000 个 div
元素(用于我正在进行的实验)。我想找到一个超快速的选择器方法,它应该是非常原始的 vanilla JS。
我的 10,000+ div
是大容器,class 的 .b0
- .b123
(大数)容纳较小的 img
,每个图片的 class 为 .q0
- .q100
我想知道是否可以使用我的行以某种方式获取在 jQuery 事件处理程序中单击的图像的容器 div
:
document.getElementsByClassName( e.target.className.replace( 'q', 'b' ) )[0];
其中 e
将是 jQuery 事件。
或者会有更快的方法吗?
文档(或树中包含所需元素的任何其他更高元素)的事件委托
这将添加一个 class 到被点击的 img。
根据给定的 jQuery 示例,它看起来像这样
$(document).on("click", "img", function(){
var img = $(this);
img.toggleClass("selected");
});
JavaScript 相当于使用目标
document.body.addEventListener("click", function(evt) {
var elem = evt.target;
if (elem.tagName === "img") {
elem.classList.toggle("selected");
}
});
DOM up/down遍历在Javascript中比较简单(其中JQuery)
元素可以通过 parentNode
访问它们的 parent
element.parentNode
和 parent 可以通过 childNodes
访问他们的 children
element.childNodes
因此,访问您图片的 parent(您的图片在 e.target
中)将是
e.target.parentNode
我有一个巨大的 UI,包含超过 10,000 个 div
元素(用于我正在进行的实验)。我想找到一个超快速的选择器方法,它应该是非常原始的 vanilla JS。
我的 10,000+ div
是大容器,class 的 .b0
- .b123
(大数)容纳较小的 img
,每个图片的 class 为 .q0
- .q100
我想知道是否可以使用我的行以某种方式获取在 jQuery 事件处理程序中单击的图像的容器 div
:
document.getElementsByClassName( e.target.className.replace( 'q', 'b' ) )[0];
其中 e
将是 jQuery 事件。
或者会有更快的方法吗?
文档(或树中包含所需元素的任何其他更高元素)的事件委托
这将添加一个 class 到被点击的 img。
根据给定的 jQuery 示例,它看起来像这样
$(document).on("click", "img", function(){
var img = $(this);
img.toggleClass("selected");
});
JavaScript 相当于使用目标
document.body.addEventListener("click", function(evt) {
var elem = evt.target;
if (elem.tagName === "img") {
elem.classList.toggle("selected");
}
});
DOM up/down遍历在Javascript中比较简单(其中JQuery)
元素可以通过 parentNode
element.parentNode
和 parent 可以通过 childNodes
element.childNodes
因此,访问您图片的 parent(您的图片在 e.target
中)将是
e.target.parentNode