使用jquery在同一按钮上添加和/或删除li

时间:2016-01-24 00:47:24

标签: jquery button click html-lists

我有一组按钮,都有类'.skills'。当我单击一个按钮时,我想切换类'btn-clicked'并将按钮文本添加到ul里面的li。我有工作。当我再次单击该按钮时,我想删除'btn-clicked'类(切换类成功完成)并从ul中删除li。我有以下代码添加'btn-clicked'类并在第一次点击时将li添加到ul,但是在第二次点击时,它不会从ul中删除li。

$(".skills").on("click", function() {

  var $this = $(this);
  var $ul = $('.previewSkillsRequired');
  var $btnText = $this.text();
  var $li = $('<li/>').html($btnText);

  $this.toggleClass('btn-clicked');

  if($this.hasClass('btn-clicked')) {
    $ul.append($li);
  } else {
    $ul.find($li).remove();
  }
});

1 个答案:

答案 0 :(得分:0)

var $li = $('<li/>').html($btnText);导致您的问题。我重写了你的代码来规避这个。 我们应该使用<li>选择器,而不是使用html()找到特定的contains()

&#13;
&#13;
$(".skills").on("click", function() {

  var $this = $(this);
  var $ul = $('.previewSkillsRequired');
  var $btnText = $this.text();

  $this.toggleClass('btn-clicked');

  if($this.hasClass('btn-clicked')) {
    $ul.append('<li>' + $btnText + '</li>');
  } else {
    $ul.find('li:contains(' + $btnText + ')').remove();
  }
  
});
&#13;
.btn-clicked {
  background-color: #33ffff;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="skills">Button Text</button> <button class="skills">Other Button</button>
<br>
<ul class="previewSkillsRequired">
  <li>List item 1</li>
  <li>List item 2</li>
  <li>List item 3</li>
</ul>
&#13;
&#13;
&#13;