如何在jQuery中重载元素属性

How to reload element attribute inside jQuery droppable()

本文关键字:重载 元素 属性 jQuery      更新时间:2023-09-26

我有一个库存,每次用户删除一个项目(将其拖到垃圾桶),我检查这个项目是否是堆栈,如果是,则删除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的堆栈,第一次掉落工作,它将属性和html更改为19,但所有其他掉落仍然使用第一次声明的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);

不能正常工作

啊啊啊啊

data('stack-count');

似乎全局保存这个,不会在新的调用

时被替换。
attr('data-stack-count');
修复:/