0

我一直在玩这段代码,一切似乎都很好。当我将其中一个黄色框拖到红色容器上时,变量price会随着值递增,data-price然后在黄色框离开红色容器时减去。

当我再次将它们拖回红色容器并导致 NaN 时,问题就出现了。$(".draggable[data-item='" + value + "']").data('price');似乎是未定义的。

感谢您在正确方向上的任何帮助。

$(function() {
  var price = 0, math = '', items = [];
  function calcPrice(math) {
      console.log(items);
      $.each( items, function( key, value ) {
        if(math == 'add')
          price += $(".draggable[data-item='" + value + "']").data('price');
        if(math == 'remove')
          price -= $(".draggable[data-item='" + value + "']").data('price');
      });
    $("#droppable").text(price);
  }
  $(".draggable").draggable({ containment: "#container", scroll: false });
  $("#droppable").droppable({
    drop: function(e, u) {
      items.push(u.draggable.data('item'));
      calcPrice('add');
    },
    out: function(e, u) {
      calcPrice('remove');
      items.splice($.inArray(u.draggable.data('item', items),1));
    }
  });
});

 

  <div id="container">
    <div id="droppable"></div>
    <div class="draggable" data-item="1" data-price="541">541</div>
    <div class="draggable" data-item="2" data-price="542">542</div>
  </div>

jsbin:http: //jsbin.com/exilos/1/edit

4

1 回答 1

2

您的代码中的问题行是
items.splice($.inArray(u.draggable.data('item', items),1));
我已将其更改为
items.splice($.inArray(u.draggable.data('item'), items));
NaN 问题不再存在..您必须检查价格的计算..
请参阅此链接

于 2013-02-07T11:48:06.813 回答