如何从无序列表中删除包含特定链接属性的列表元素

时间:2014-01-30 13:45:01

标签: javascript jquery

我有这个unordered list并希望在无序列表的list元素中获取link元素的data-file属性值,然后删除它所在的整个list元素(如果它不在数组z。

<ul id="hithere"class="image-list">
   <li class='image-list'>
      <div class='controls'>
         <a href='#' class='image-list' data-name='myname'><img src='stop.png' ></a>
      </div>
      <span class='name'>myname12</span
   </li>
   <li class='image-list'>
      <div class='controls'>
         <a href='#' class='image-list' data-name='myname2'><img src='stop.png' ></a>
      </div>
      <span class='name'>myname1312</span
   </li>
</ul>

这是我的jQuery但删除了所有列表元素

var z = ["myname", "yourname"];
$("li.image-list a.image-list ").filter(function () {

    if ($.inArray($(this).attr('data-name'), z) == -1) {
        $(this).parent("li.image-list").empty().remove();
    }
});

这是从服务器接收的代码:

var box = $('#drone');


box.f_drop({
    url: 't_file.php',

    check_data:function(i,file,response){
     z=[];z.push(response.Oname);


        $("li.image-list  ").filter( function () {
         return $.inArray($(this).find('a[data-name]').attr('data-name'), z) == -1
        }).remove();

    },


});

为什么现在所有列表都被删除而不是只有一个,即不在数组中?另外,我如何重命名数据名称属性,改为说“xyz”。

1 个答案:

答案 0 :(得分:1)

您的脚本中存在一些问题

  • 该数组名为z not _out
  • 锚元素没有类
  • data属性名为name,而不是filename

尝试

var z = ["myname", "yourname"];
$("li.image-list").filter(function () {
    return $.inArray($(this).find('a[data-name]').attr('data-name'), z) == -1
}).remove();

演示:Fiddle