我有两个相同的div和函数,如下所示。我的问题是,为什么这只适用于第一个dedicate__wrapper?当我点击第二个时,什么也没有发生,控制台没有错误。
$(document).ready(function() {
$(".dedicate__wrapper").on('click', function() {
var el2 = document.querySelector(".dedicate__wrapper");
var el3 = document.querySelector(".config_submit");
if (el2.classList.contains('step1')) {
el3.classList.remove('disable');
} else {
el3.classList.add('disable');
}
});
});
<div class="dedicate__wrapper"></div>
<div class="dedicate__wrapper"></div>
我试着添加另一个点击事件,但没有帮助我。你有什么想法?
2条答案
按热度按时间dojqjjoe1#
这特指DOM中的 * first * 匹配元素:
在本例中,如果您要查找的元素就是您单击的元素,那么在jQuery click处理程序中,它就是
this
。x一个一个一个一个x一个一个二个x
或者,要进一步使用jQuery:
一个三个三个一个
如果您有其他元素要标识相对于单击元素的 *,则可以从
$(this)
开始,通过traverse the DOM查找相对于单击元素的特定元素。wfveoks02#
document.querySelector
返回单个元素,因此您的条件将应用于找到的第一个DOM元素。您将始终首先获得匹配的
el2
和el3
一半代码使用普通js,另一半代码使用jQuery
我会用这样的东西重写
这里是伪小提琴:https://jsfiddle.net/nitinjs/528x0syo/17/