如何在jQuery droppable()中重新加载元素属性

时间:2014-03-26 10:05:46

标签: javascript jquery

我有一个库存,每次用户删除一个项目(将其拖到垃圾桶)时,我会检查这个项目是否为堆栈,如果是,则删除1.

问题是每次用户放弃时堆栈编号保持不变

$('#trash-wrapper').droppable({ 

        accept: ".item", 
        drop: function(event, e){

            // If the trashed item has a stack that is bigger than 1, do not remove the element but remove 1 from the stack and return the item back
            if(e.draggable.find('.inventory-stack').data('stack-count') > 1){

                var count = e.draggable.find('.inventory-stack').data('stack-count');

                e.draggable.find('.inventory-stack').attr('data-stack-count', (count - 1)).html(count - 1);
                _ajaxFetch("php/ajax/game/conq-delete-item.php", {dby : 'l', id: e.draggable.attr('data-loot-id')});

            }
            // Otherwise destory the element
            else{

                e.draggable.remove();
                _ajaxFetch("php/ajax/game/conq-delete-item.php", {dby : 'i', id: e.draggable.attr('data-item-id')});

            }

        }

    });

问题是Count始终保持不变。如果有20个堆栈,第一个drop工作,它将属性和html更改为19,但所有其他drop仍然使用先声明的count变量 - 20,所以它永远不会超过1。

我甚至尝试过

e.draggable.find('.inventory-stack').attr('data-stack-count', (e.draggable.find('.inventory-stack').data('stack-count') - 1)).html(e.draggable.find('.inventory-stack').data('stack-count') - 1);

不起作用

1 个答案:

答案 0 :(得分:0)

Ughhhhhh

data('stack-count');

似乎全局保存,并且不会在新呼叫中替换

attr('data-stack-count');

修正了它:/