在两个列表之间移动项目,但过滤已存在的项目

时间:2009-07-25 15:51:07

标签: javascript jquery

我有一个包含两个列表(Unorders列表)的网页,我必须将项目从列表1移动到列表2,但要过滤掉列表2中已有的项目。 我正在使用JQuery作为js库。我知道我可以选择要移动到列表2的所有项目,逐个循环并检查列表2中是否存在alredy,但是如果有一种方法可以使用过滤器在较少的代码行中进行调用,那么:not,:具有 ... 这是一个html结构:

  <ul id="ulList_1">
     <li>
        <a href="#">item 1</a>
     </li>
     <li>
        <a href="#">item 2</a>
     </li>
  </ul>

  <ul id="ulList_2">
     <li>
        <a href="#">item 2</a>
     </li>
     <li>
        <a href="#">item 3</a>
     </li>
     <li>
        <a href="#">item 4</a>
     </li>      
 </ul>

因此,在这种情况下,我只想选择“项目1”,因为“项目2”已存在于“ulList_2”中,并将其附加到列表2 感谢

1 个答案:

答案 0 :(得分:1)

我会首先使用$.map list 2 元素的innerText提取到数组中,然后filter list 1 ,使用$ .inArray仅选择 list 2 的不存在元素:

var list2Items = $('#ulList_2 li > a').map(function(){return $(this).text();}); 
// list2Items will be: ["item 2", "item 3", "item 4"] 

var itemsNotInList2 = $('#ulList_1 li > a').filter(function(){
  return $.inArray($(this).text(), list2Items) == -1; // Select only non-existing
});                                                   // items.