2012-01-04 51 views
0

我有一个<ul>一组项目如下:对自定义html数据执行操作?

<li class="word" id="apple" data-letters="5" draggable="true">apple</li> 
<li class="word" id="ball" data-letters="4" draggable="true">ball</li> 

我希望能够拖动这些项目到其他<ul>秒(目前在做这个使用jQueryUI的排序),并具有输出端的总功能每个目标的字母数量(总和为data-letters值)<ul> ...

可以这样做吗?如果是这样,几个指针将不胜感激。

+0

当然,这是可以做到。你试过什么了? – 2012-01-04 20:06:11

+0

有没有真的 - 不知道从哪里开始设置计算。据推测,作为第一步,我需要能够通过ul'target1'中的class'word'获得所有li元素,但我不知道如何去做。 – kolys 2012-01-04 20:08:15

回答

2
$(function() { 

      var updateTotal = function(event, ui) 
      { 
       var total = 0, 
        $list = $(ui.sender); 
       $list.find(".word").each(function() { 
        total += Number($(this).attr("data-letters")); 
       }); 
       $("#" + $list.attr("id") + "-totals").html(total); 
      }; 

    $("#sortable1, #sortable2").sortable({ 
        receive: updateTotal, 
        remove: updateTotal, 
     connectWith: ".connectedSortable" 
    }).disableSelection(); 
}); 

这假定显示您汇总的HTML标签的ID为= “sortable1-总数” 和id = “sortable2-总计”

+0

真棒,谢谢 - 我假设我也可以通过在每个li的drop事件上调用此函数来动态更新此更新? – kolys 2012-01-04 20:11:56

+0

此外,只需确认...而不是'alert(total);',我可以使用document.getElementById('target1Total')。innerHTML = total;'? – kolys 2012-01-04 20:16:43

+0

可排序小部件上有一个*接收*和*删除*事件。 (http://jqueryui.com/demos/sortable/#events)ui.sender属性是列表。另外,请阅读jQuery教程。在jQuery风格的开发中,$('#target1Total')。html(total)将是非常受欢迎的。 – 2012-01-04 20:23:54