jquery - 拖放 - 检查项目是否放置在正确的位置

标签 jquery drag-and-drop jquery-ui-draggable

我正在自学 javascript/jquery,并决定作为一个副项目来创建一个拖放游戏。我根据我发现的其他教程进行了修改,因此请轻松编写代码 - 希望它不会太可怕。

我正在使用 jquery ui dropable 库来实现游戏,目前我会在元素掉落后检查它是否位于正确的位置,如果是,我会将分数增加 1。

然而,我遇到的问题是,当元素掉落在错误的地方时,我无法让分数下降一分。

如果将一个方 block 放置在正确的占位符上,则得分会增加 1,但如果同一个方 block 从正确的占位符上移除,则得分需要减 1。

这是我到目前为止所做的演示 http://creativelabel.co.uk/drag-and-drop/

有什么想法吗?

最佳答案

解决此问题的一种方法是在删除的元素中存储它是否放置在有效的方 block 中。这意味着当它被移动到无效的方 block 时,您可以检查它以前是否在有效的方 block 中,如果是这种情况,则将分数减一。

希望这是清楚的!

参见http://jsfiddle.net/pET3y/现场演示

相关代码:

  if ( slotNumber == imgNumber ) {
    ui.draggable.addClass( 'img-match' );
    ui.draggable.data("valid", true);

    imgMatch++;
  }  else {
      if(ui.draggable.data("valid")) {
         imgMatch--;
         ui.draggable.data("valid", false); 
      }
  }

注意: fiddle 有一个警报 alert(ui.draggable.data("valid")); 用于调试

--

更改为拖动时分数会下降

您现在要做的是监听drag事件(称为activate),并在调用该事件时运行一个函数。该函数检查被拖动的元素之前是否处于正确的位置,如果是,则将其标记为不在正确的位置并降低分数。

参见:http://jsfiddle.net/3NkwJ/1/

      drop: handleDropEvent,
      activate: handleDragEvent //add new event
} );

并添加以下内容:

  function handleDragEvent( event, ui ) {
    if(ui.draggable.data("valid")) {
             imgMatch--;
             $('input[name=Score]').val(imgMatch);
             $('#score h1').text(imgMatch);
             ui.draggable.data("valid", false); 
    }      
  }

关于jquery - 拖放 - 检查项目是否放置在正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284456/

相关文章:

jQuery 可排序/可拖动列表 disableselection() 不工作

Jquery可拖动问题

javascript - jQuery 用默认值填充空文本输入

jquery - 将 JQuery UI 选项卡与底部对齐

javascript - 拖放到 Safari 5 中会产生意外的文件名

c# - 异步拖放到 Windows 资源管理器

javascript - 为可拖动对象添加颜色

javascript - 我怎样才能在一页上有多个标签框

javascript - 防止 window.scroll 处理程序保留到其他页面

android - 在 ListView 中实现滑动