单击时在数组中添加和删除值

时间:2018-01-06 11:14:48

标签: jquery arrays

我有像

这样的Ul列表
<ul>
   <li>
       <a>item first <a>
   </li>
   <li>
       <a>item first <a>
   </li>
   <li>
       <a>item first <a>
   </li>
   <li>
       <a>item first <a>
   </li>
</ul>

我想选择锚标记的文本,并在点击时使用jquery添加或删除。

var arr = [];

$(ul a).on('click',function(){
     arr.push($(this).text());
})

如果再次单击,则检查值是否存在,然后从阵列中删除。如果没有,那么添加

由于

2 个答案:

答案 0 :(得分:0)

首先,我想指出$(ul a)中缺少的引号。它应该是$('ul a')带引号。然后策略将是在数组中找到存在与否的文本,这可以像这样实现:

var arr = [];
$('ul a').on('click',function(){
    // use trim so that the spaces before and after do not affect
    var clickedText = $(this).text().trim();
    // the clicked anchor text exist
    if(arr.indexOf(clickedText) !== -1){
       // remove that text from array
       arr.splice(arr.indexOf(clickedText), 1);
    } else {
       arr.push(clickedText);
    }
     console.log(arr);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
   <li>
       <a>item first <a>
   </li>
   <li>
       <a>item first <a>
   </li>
   <li>
       <a>item first <a>
   </li>
   <li>
       <a>item first <a>
   </li>

答案 1 :(得分:0)

$(ul a).on('click',function(){
   let currentElement=$(this).text().trim();
let foundElement = arr.some(function (element) {
    return element==currentElement;
  });
    if(!foundElement)
      {
        arr.push(currentElement);
      } 
    else 
    {
     arr.pop(currentElement);
    }
});