【问题标题】:JQuery - Add class on click verifying IDJQuery - 在点击验证 ID 时添加类
【发布时间】:2022-01-12 16:28:32
【问题描述】:

我正在尝试向包含具有唯一 ID 的父容器的特定元素添加一个类。

我有几个按钮包含在一个 div 中,它们都使用相同的类。出于某种原因,我不能只使用 $(this),所以我创建了一个循环,将唯一 ID 添加到容器中。

HTML

<div class='section'>
 <div class='btn-container' id='btn-1'>
  <button class='btn'></button>
 </div>
 <div class='btn-container' id='btn-2'>
  <button class='btn'></button>
 </div>
 <div class='btn-container' id='btn-3'>
  <button class='btn'></button>
 </div>
</div>

jQuery

$("button").click(function (e) {
  e.preventDefault();

  var target = $(e.target).parents(".button-container").attr("id");
  console.log(target);
  $(target).find(".btn").addClass("active");

});

我以 ID 为目标,它可以工作,console.log 会返回正确的信息。但是,由于某种原因,我无法添加该类。

提前感谢您的帮助! (:

编辑: 我正在尝试将活动类添加到 ID 中包含的按钮。

示例: $("#btn-1 .btn").addClass("active");但 ID 会根据点击的信息动态填充。

【问题讨论】:

  • 你想将类添加到按钮还是父div?
  • 好电话!我需要将类添加到按钮。所以,我正在尝试做类似的事情:$(ID .btn).addClass("active"); 谢谢!
  • 最后一行是$("#" + target) - 但你两次得到同样的东西。所以var target = $(e.target).parents(".button-container"); target.find(".btn"... - 不需要id.attr("id")

标签: javascript html jquery frontend


【解决方案1】:

保持简单,这应该可以工作

$(document).ready(function() {
 
  $("button").click(function (e) {
  e.preventDefault();

  $(e.target).addClass("active")

});
});
.active{
  border: 1px red solid;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='section'>
 <div class='btn-container' id='btn-1'>
  <button class='btn'>Test</button>
 </div>
 <div class='btn-container' id='btn-2'>
  <button class='btn'>Test</button>
 </div>
 <div class='btn-container' id='btn-3'>
  <button class='btn'>Test</button>
 </div>
</div>

【讨论】:

  • 你可以使用$(this)而不是$(e.target) :: $(this).addClass("active")(更多jQuery-ish)
  • 如上:e.target 并不总是与this 相同
猜你喜欢
  • 2022-06-28
  • 1970-01-01
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多