我试图转移到使用普通的旧Javascript(由于速度问题而离开jQuery)。我需要在某些东西上触发click事件,然后在main元素上切换一个类。这就是我所拥有的:
document.querySelector('.wrapper-dropdown').addEventListener("click", function(event) {
event.target.classList.toggle("active");
});
https://jsfiddle.net/h12o073L/17/
我遇到的问题是,我只想要主要元素添加课程 - 而不是孩子!目前,如果我点击其中一个价格,就会获得 .active 类(而我希望.wrapper-dropdown
元素添加该类)
我必须承认 - 我对jQuery变得非常懒惰,所以我可能会错过一些简单的东西;)
答案 0 :(得分:2)
您希望.active
类仅添加到.wrapper-dropdown
您可以使用currentTarget
这将始终引用您附加事件处理程序的元素。
document.querySelector('.wrapper-dropdown').addEventListener("click", function(event) {
event.currentTarget.classList.toggle("active");
});
答案 1 :(得分:1)
您应该使用.closest()
功能选择目标Element.closest()
。
null
方法返回最接近的祖先 当前元素(或当前元素本身)匹配 参数中给出的选择器。如果没有这样的祖先,那就是 返回document.querySelector('.wrapper-dropdown').addEventListener("click", function(event) { event.target.closest('.wrapper-dropdown').classList.toggle("active"); });
。
document.querySelector('.wrapper-dropdown').addEventListener("click", function(event) {
event.target.closest('.wrapper-dropdown').classList.toggle("active");
});
<div id="dd-price-from" class="wrapper-dropdown" tabindex="1">
<span>Price From</span>
<ul class="dropdown">
<li data-what="20"><a href="#">€20</a></li>
<li data-what="50"><a href="#">€50</a></li>
</ul>
</div>
&#13;
first_extrusion = vtkLinearExtrusionFilter()
# set parameters ....
first_extrusion.Update()
second_extrusion = vtkLinearExtrusionFilter()
second_extrusion.SetInputData( first_extrusion.GetOutput() )
# set other parameters ...
&#13;