2013-02-18 48 views
-1

因此,我在表格中有一组图片,当用户选择图片时,它会将该图片的ID添加到ul。如果用户取消选择图片,我将如何从ul中删除该项目?一旦用户取消选择图片,如何从UL删除项目

这里是我到目前为止的代码

$('td.n, td.p').click(function() { 

    if ($(this).hasClass('done')) { 
     $(this).removeClass('done'); 
     $('#order').remove('#id'); 

    } else { 

     var p = $('.picked'); 
     if (p.length == -1) { 
      $(this).addClass('picked'); 

     } else { 
      if ($(p[0]).text() == $(this).text()) { 
       $(this).addClass('done'); 
       $('.picked').addClass('done') 

        var lst = $(this).attr('id'); 
        var ul = $('<ul/>'); 
        for (var i = 0; i < 1; i++) { 
         var li = $('<li/>'); 
         li.html(lst); 
         ul.append(li); 
        } 
        $('#order').append(ul); 


      } 

     } 
    } 

}); 

一些HTML的

<table> 
      <tr> 
       <td class='n' id='a1'><img src='seat_icon.jpg'/></td> 
       <td class='n' id='a2'><img src='seat_icon.jpg'/></td> 
       <td class='n' id='a3'><img src='seat_icon.jpg'/></td> 
       <td class='n' id='a4'><img src='seat_icon.jpg'/></td> 
       <td></td> 
       <td class='n' id='a6'><img src='seat_icon.jpg'/></td> 
       <td class='n' id='a7'><img src='seat_icon.jpg'/></td> 
       <td class='n' id='a8'><img src='seat_icon.jpg'/></td> 
       <td class='n' id='a9'><img src='seat_icon.jpg'/></td> 
      </tr> 
</table 

编辑:

如果我添加

$('ul li').remove(lst); 

它只是删除了整个名单。无论如何,我可以删除一个项目?

添加的jsfiddle链接:

http://jsfiddle.net/xFvEx/1/

+0

p.length永远== -1,所以大部分代码永远不会执行 – lmortenson 2013-02-18 16:41:00

+0

这一切都执行 – 2013-02-18 16:47:33

回答

0

一种解决方案将是一个.data()变量添加到ul当它被添加时,然后测试是否存在data变量:

  var lst = $(this).attr('id'); 
      var ul = $('<ul/>').data('text', lst); 

      var ulexists = $('ul').filter(function() { 
       return $(this).data('text') == lst; 
      }); 
      if (ulexists.length) { 
       ulexists.remove(); 
      } else { 
       for (var i = 0; i < 1; i++) { 
        var li = $('<li/>'); 
        li.html(lst); 
        ul.append(li); 
       } 
       $('#order').append(ul); 
      } 

http://jsfiddle.net/mblase75/xFvEx/

0

,如果你想从DOM(上行)删除元素只是用.remove()

+0

如果您想更详细的回答,请提供的jsfiddle我很乐意给你一个 – abbood 2013-02-18 16:48:44

0

此方法应该做的伎俩,试着告诉我,如果它不。

function deselect(id) 
{ 
    $('#order').find('ul li').each(function(){ 
    if($(this).html()==id) 
    { 
     $(this).remove(); 
    }}); 
} 

其中id是相关td的id。

0

我认为这个问题是在

$('#order').remove('#id'); 

这个删除id为“ID”是与id元素的后代元素=“订单”蝙蝠你没有设置任何标识上栗。蝙蝠为什么你这么复杂。试试这个

$('td.n, td.p').click(function() { 

    $(this).toggleClass('picked'); 

    var ids = $(".picked").map(function(){ 
     return $(this).attr('id'); 
    }); 

    var ul = $('<ul/>'); 
    for (var i = 0 ; i < ids.length ; i++){ 
     ul.append($('<li/>').text(ids[i])); 
    } 
    $('#order').empty().append(ul); 
}); 

尝试在http://jsfiddle.net/wftMz/5/

相关问题