在一个带有按钮的循环中:只在单击的按钮上单击鼠标切换类

1zmg4dgp  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(514)

css:

  1. .btn-category-list-col {
  2. background:#f4f6f9;
  3. border: 0 !important;
  4. }
  5. .btn-category-list-col:hover {
  6. background: #E2EEFC;
  7. }
  8. .btn-category-list-col button:hover {
  9. font-weight: bold;
  10. }
  11. .btn-category-list-col-click {
  12. background: #E2EEFC;
  13. }
  14. .btn-category-list-col-click button {
  15. font-weight: bold;
  16. }

循环按钮:

  1. <td class="p-0 btn-category-list-col">
  2. <button type="button" value="${cat.category_id}" class="category_sort btn float-left" data-toggle="modal" data-target="#createCategory">${cat.category_name}</button>
  3. </td>

剧本

  1. $(document).on('click', '.category_sort', function (e) {
  2. e.preventDefault();
  3. $(".btn-category-list-col").toggleClass("btn-category-list-col-click");
  4. });


正如您所看到的,我的onclick函数更改了所有类(.toggleclass),而不是单击的按钮,因为由于循环,所有按钮都是相同的,我如何使它专门针对我单击的按钮?

x33g5p2x

x33g5p2x1#

您可以使用jquery的属性选择器以特定按钮为目标,而不是选择类。
假设 cat.category_id 是独一无二的

  1. <!-- add data-id attribute to it-->
  2. <td class="p-0 btn-category-list-col">
  3. <button type="button" value="${cat.category_id}" data-id="${cat.category_id}" class="category_sort btn float-left" data-toggle="modal" data-target="#createCategory">${cat.category_name}</button>
  4. </td>
  1. $(document).on('click', '.category_sort', function (e) {
  2. e.preventDefault();
  3. let id = event.target.dataset.id;
  4. if (id) {
  5. $(`button[data-id=${id}]`).toggleClass("btn-category-list-col-click");
  6. }
  7. });
vc9ivgsu

vc9ivgsu2#

我很难理解,当您在问题中呈现jquery代码时,为什么要询问javascript答案。所以,这是你的解决方案

  1. document
  2. .querySelectorAll('.category_sort')
  3. .forEach(bt=>
  4. {
  5. bt.onclick = e =>
  6. {
  7. e.preventDefault()
  8. bt.closest('.btn-category-list-col').classList.toggle('btn-category-list-col-click')
  9. }
  10. })

相关问题