javascript - 仅选择被单击元素的 'this' 对象(而不选择同一类中的其他元素)

标签 javascript this

我正在尝试更改单击时的按钮文本(使用 Bootstrap 4)。我在使用正确的语法时遇到问题。

我的html:

<div class="btn-group">
  <button type="button" class="btn btn-outline-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="dropdownMenuButton2">
  Option 1                  
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuButton2">
    <a class="dropdown-item" href="#">Option 2</a>
    <a class="dropdown-item" href="#">Option 3</a>
 </div>
</div>

<div class="btn-group">
  <button type="button" class="btn btn-outline-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="dropdownMenuButton2">
  Type 1                  
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuButton3">
    <a class="dropdown-item" href="#">Type 2</a>
    <a class="dropdown-item" href="#">Type 3</a>
 </div>
</div>

和JS:

$(".dropdown-menu a").click(function () {

  $(".btn:first-child").html($(this).text());

});

换句话来说 - 当我单击一个按钮并更改其值时,另一个按钮也会更改......

所以我想更改唯一点击的这个值。

最佳答案

您需要更改与链接相关的 .btnhtml

您可以通过选择距离您的链接最近的 .btn-group,然后在其中搜索 .btn 来实现此目的:

$(".dropdown-menu a").click(function () {
  $(this).closest('.btn-group').find('.btn').html($(this).text());
});

$(".dropdown-menu a").click(function() {
  $(this).closest('.btn-group').find('.btn').html($(this).text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="btn-group">
  <button type="button" class="btn btn-outline-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="dropdownMenuButton2">
  Option 1                  
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuButton2">
    <a class="dropdown-item" href="#">Option 2</a>
    <a class="dropdown-item" href="#">Option 3</a>
  </div>
</div>

<div class="btn-group">
  <button type="button" class="btn btn-outline-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="dropdownMenuButton2">
  Type 1                  
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuButton3">
    <a class="dropdown-item" href="#">Type 2</a>
    <a class="dropdown-item" href="#">Type 3</a>
  </div>
</div>

关于javascript - 仅选择被单击元素的 'this' 对象(而不选择同一类中的其他元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48903036/

相关文章:

Javascript 日期未定义错误

javascript - 防止嵌入的 ASP 代码被转义

javascript - 将某些 observableArray 对象属性转换为 observable

javascript - 在没有 "Possible strict violation."的函数中使用它

javascript - JavaScript 回调函数中 `this` 的轻微混淆

javascript - Bootstrap slider 有 3 个或更多 handle 吗?

javascript - Javascript 中的 setInterval 函数单元测试问题

javascript - 理解 RequireJS 中的上下文

javascript - 如何在 JavaScript 上访问 "this"的父级?

javascript - 使用jquery正确制作.next()元素slideToggle?