jQuery求和上面项目的值

时间:2009-12-21 08:20:38

标签: javascript jquery jquery-selectors

我的问题很小。

我想要实现的是将上述元素的值加到每个元素中。 例如,每个位置都有自己隐藏在属性中的时间值。我可以通过使用jQuery

来获得它
var time = $(ui.draggable).attr("time");

现在我们有4个职位,时间如下:

  1. 432秒
  2. 123秒
  3. 5634秒
  4. 654秒
  5. 现在我想这样总结一下:

    1. 432
    2. 432+123
    3. 432+123+5634
    4. 432+123+5634+654
    

    任何想法我该怎么做?

    这是我的代码:

    $(document).ready(function(){
    
        $(".trash").sortable({
            tolerance: 'touch',
            receive: function (event, ui) {
            ui.item.remove();
               }
        });
        $(".DragContainer_dest").sortable({helper:'clone',
            opacity: 0.5,
            connectWith: '.trash',
            scroll: true,
            update : function () { 
            var order = $('.DragContainer_dest').sortable('serialize',{key:'string'}); 
            $.post('includes/ajaxify.php',order+'&action=update');    
            var time = $(this).attr("time");
            },
            out : function () { 
                ui.item.remove();
            }
        });
    
        $("div[class=DragContainer] .DragBox").draggable({helper:'clone'}); 
    
        $(".DragContainer_dest").droppable({
            accept: ".DragBox",
            tolerance: "touch",
            drop: function(ev, ui) {
               $(this).append($(ui.draggable).clone().addClass("added"));  
            }
        });
      });
    

    我希望在DragContainer_dest中删除或排序的每个元素都可以对来自其他元素的值求和。可以这样做吗?

3 个答案:

答案 0 :(得分:1)

据我所知,您需要收集有关元素之前的节点的所有兄弟节点并收集其属性。我们试试这个:

var nodeSiblings = $(this).parent().children();
// We need to find the index of our element in the array
var stopIndex = nodeSiblings.index(this);
var time = 0;

nodeSiblings.each( function(index, element){
    if (index > stopIndex) return;
    var attribute = parseInt($(element).attr("time"), 10);
    if (!isNaN(attribute)) time += attribute;
});

// Here you have the sum of all time attributes
alert(time);

答案 1 :(得分:0)

也许添加一个名为timeSum的全局变量,然后为每个丢弃的元素增加它?

var timeSum = 0;

$(".DragContainer_dest").droppable({
    drop: function(ev, ui) {
       timeSum += parseInt($(ul.draggable).attr('time'));
    }
});

答案 2 :(得分:0)

如果您按照其他地方的指示使用parseInt,请不要忘记包含基数:

parseInt($(ul.draggable).attr('time'), 10);

如果你在开始时有一个零,它将把它视为八进制,除非你指定基数。