Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery draggable and dropable with data()返回NaN_Javascript_Jquery - Fatal编程技术网

Javascript jQuery draggable and dropable with data()返回NaN

Javascript jQuery draggable and dropable with data()返回NaN,javascript,jquery,Javascript,Jquery,我一直在玩这段代码,一切似乎都很好。当我将其中一个黄色框拖到红色容器上时,变量price随数据价格值递增,然后在黄色框离开红色容器时减去 当我再次将它们拖回红色容器上方并导致NaN时,问题就出现了$(“.draggable[数据项=”“+value+”)”)。数据('price')似乎未定义 任何方向正确的帮助都将受到感谢 $(function() { var price = 0, math = '', items = []; function calcPrice(math) {

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

当我再次将它们拖回红色容器上方并导致NaN时,问题就出现了<代码>$(“.draggable[数据项=”“+value+”)”)。数据('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));
    }
  });
});


541
542

Jsbin:

ur代码中有问题的行是
items.splice($.inArray(u.draggable.data('item',items),1))
我已将其更改为
items.splice($.inArray(u.draggable.data('item'),items))

问题已经不存在了你必须检查价格的计算

@estar..我认为问题在于循环引用..你检查过你的控制台日志了吗?啊,太好了。非常感谢。是的,我看到了计算的问题,如果物品在红色容器中反复掉落,每次都会累积起来。你现在也得到了你的选票;)
  <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>