重命名特定的链接元素属性并通过比较删除

时间:2014-02-02 06:16:47

标签: jquery

我动态创建了这个unordered list,并希望在无序列表的list元素中获取link元素的data-name属性值,将其与resoponse对象的数组值进行比较,然后删除整个如果它不在数组中,它所在的list元素,否则重命名它。

<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,其中iam将所有列表元素与数组cookedJSON进行比较并更改数据名属性,如果它在数组中为“uname”;这是在array.if它不是,然后我删除链接所在的列表。

 function work(i,fly,response){

    cookedJSON=[];cookedJSON.push({ uname : response.uname , Oname : response.Oname });
$("li.image-list").each(cookedJSON, function(i,arr) {
      if($(this).find('a[data-name]').attr('data-name')== arr.Oname){
        $(this).attr('data-name')==arr.uname ;}else{$(this).detach();}
    });

它没有将数据名称更改为新值,也没有删除。为什么?我希望它重命名并删除它 特定的列表元素,其余部分保持不变。

1 个答案:

答案 0 :(得分:0)

你混合了两个循环语句,即

$.each(arr,function(key,value)
{
    // accessing array element
});

and

$('#selector').each(function(index)
{
   // accessing DOM element
});

根据您的要求进行调整。但是不需要嵌套循环。

这样就可以了解

$('#selector').each(function(index)
{
   cookedJSON[index].Oname; 
});