2012-04-24 120 views
1

我想开发一个简单的拖放'游戏'。简单地说,你所做的只是将各种物品拖放到一个区域,并根据拖动的项目说出正确或错误。这是我到目前为止,它根本不工作,我不知道为什么。我对JS和jQuery的了解还有很多不足之处。jQuery拖放不工作

<script> 
$(function() { 
    $("#draggable").draggable(); 
    $("#wrong").draggable(); 

    $("#droppable").droppable({  
     drop: function(event, ui) { 
      var currentId = $(this).attr('id'); 
      if (currentId == "draggable") { 
       $(this) 
        .addClass("highlight") 
        .find("p") 
        .html("Correct! :)"); 
      } else { 
       $(this) 
        .find("p") 
        .html("Wrong! :("); 
      } 
     } 
    }); 
}); 
</script> 

现在我有工作,我需要拖动图像的多个实例,但是当我添加更多的已经添加了新的不工作。

http://jsfiddle.net/KcruJ/9/

+0

你可以做你的代码的的jsfiddle?或使用萤火虫来检查你是否有任何JavaScript错误。 – Kishore 2012-04-24 13:51:19

+0

在你的小提琴中:你不需要具有相同ID的元素。使用类而不是 – Valentin 2013-07-18 11:00:18

回答

0
var currentId = $(this).attr('id'); 
if (currentId == "draggable") 
    ... 

永远不会导致如此,因为$(this) represents the droppable the draggable is dropped on. ui.draggable represents the draggable[1]

尝试:

var currentId = $(ui.draggable).attr('id'); 
if (currentId == "draggable") 
    ... 
0

这工作:http://jsfiddle.net/T6nu3/2/


$(this).attr('id'); 

将始终返回droppable。 您需要访问拖动的元素:

$(ui.draggable).attr('id'); 

看看在jQuery UI Documentation以获取更多信息。

代码:

$(function() { 
    $("#draggable").draggable(); 
    $("#wrong").draggable(); 

    $("#droppable").droppable({ 
     drop: function(event, ui) { 
      var currentId = $(ui.draggable).attr('id'); 
      if (currentId == "draggable") { 
       $(this).addClass("highlight").find("p").html("Correct! :)"); 
      } else { 
       $(this).find("p").html("Wrong! :("); 
      } 
     } 
    }); 
}); 
+0

完美的感谢! :d – Jiggles 2012-04-24 14:11:36