javascript - 每个选择器的 jQuery onclick

标签 javascript jquery html

当我单击 button div 时,我想将一个名为 active 的类添加到 popup div 中,该类具有相应的类名data-trigger 属性。

例如,如果我单击类名为 button-two 的 div,则具有 data-trigger="button-two" 的 div 应该获取类 事件

问题:active 仅添加到最后一个 popup div。我怎样才能做到这一点?

这是我尝试过的:

$('.popup').each(function() {

  popupObj = $(this);
  var popupTrigger = popupObj.data("trigger");

  $('.' + popupTrigger).click(function() {
    popupObj.addClass('active');
  });

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="button-one">Test 1</div>
<div class="button-two">Test 2</div>
<div class="button-three">Test 3</div>

<div class="popup" data-trigger="button-one">Hello world</div>
<div class="popup" data-trigger="button-two">Hello there</div>
<div class="popup" data-trigger="button-three">Hello again</div>

最佳答案

这是因为您没有将 popupObj 声明为局部变量;它是全局的,因此它会在 each 的最后一次迭代中发生变化:它将在所有三个点击处理程序中引用值。

请记住,each 将在调用任何点击处理程序之前执行所有迭代。

解决方案:使用var popupObj。这样每个点击处理程序都会引用它们的“自己的”变量。

关于javascript - 每个选择器的 jQuery onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54892958/

相关文章:

javascript - 在 JS 扩展中使用 chrome.bluetooth.AddProfile 的权限被拒绝

javascript - 如何在鼠标悬停在 div 上时编写此功能?

javascript - 当 div 高度大于 50px 时替换 url (window.location)

javascript - django-summernote 小部件元素的自定义 javascript 不起作用?

javascript - 在 jQuery 中切换类时遇到问题

javascript - HTML5 下载网站为 PDF

javascript - Javascript 执行上下文的澄清

javascript 变量总是不相等

javascript - 阻止 Chrome 在我的网站上自动建议信用卡号码

html - 响应式 Div 中的垂直对齐文本