如何使用jquery将主标题更改为所选列表项的名称?

pqwbnv8z  于 2023-04-20  发布在  jQuery
关注(0)|答案(1)|浏览(160)

是否可以通过所选/活动列表的名称更改主标题?例如,如果我选择“项目A”,我希望主标题更改为“项目A”,如果我选择“子项目A1”,则主标题将更改为“子项目A1等其他项目。但当没有列表项处于活动状态时,标题也必须恢复为原始名称/selected如何使用jquery实现这一点?

var toggler = document.getElementsByClassName("caret");
var i;

for (i = 0; i < toggler.length; i++) {
  toggler[i].addEventListener("click", function() {
    this.parentElement.querySelector(".down").classList.toggle("active");
    this.classList.toggle("caret-down");
  });
}
* {
  margin: 0;
  padding: 0;
  list-style-type: none;
}
.container {
  background: silver;
  width: 300px;
  border: 1px solid;
  margin: 10px;
}
.title {
  background: #94a2e4;
  border-bottom: 1px solid;
  border-top: 1px solid;
  padding: 5px;
}
.list{font-size: 20px;}
.caret {
  cursor: pointer;
  user-select: none;
}
.caret::before {
  content: "\25B6";
  color: black;
  display: inline-block;
  margin-left: 230px;
}
.caret-down::before {
  transform: rotate(90deg);  
}
.down {
  display: none;
  background: #e0e0e0;
}
.active {
  display: block;
}
<div class="container">
  <div class="title">
    <h1>Change titlet</h1>
  </div>
  <div class="list">
    <ul>
      <li>Item A<span class="caret">
        <ul class="down">
          <li>Sub item A1</li>
          <li>Sub item A2</li>
          <li>Sub etc.</li>
        </ul>
      </li>
      <li>Item B<span class="caret">
        <ul class="down">
          <li>list etc.</li>
        </ul>
      </li>
    </ul>
  </div>
sr4lhrrt

sr4lhrrt1#

不需要jquery。你所需要做的就是在.down中的所有li中添加一个click事件。你可以通过选择所有li,添加该事件来实现。在该事件中,你可以设置标题的文本。

const title = document.querySelector(".title > h1");

const downItems = document.querySelectorAll(".down > li");

for (const downItem of downItems) {
  downItem.addEventListener("click", event => {
    event.stopPropagation(); // Stops the parent from closing
    title.innerText = event.target.innerText;
  });
}

相关问题