我的问题很小。
我想要实现的是将上述元素的值加到每个元素中。 例如,每个位置都有自己隐藏在属性中的时间值。我可以通过使用jQuery
来获得它var time = $(ui.draggable).attr("time");
现在我们有4个职位,时间如下:
现在我想这样总结一下:
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中删除或排序的每个元素都可以对来自其他元素的值求和。可以这样做吗?
答案 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);
如果你在开始时有一个零,它将把它视为八进制,除非你指定基数。