2016-10-12 39 views
-1

我有两个div容器,我可以在这两个容器之间拖放视频。如果条件在回调函数内返回false

在删除div之前,我正在检查此视频是否已在第二个div容器内部存在与否。

如果它不存在于第二个div容器内,那么只有我放弃它或者什么都不做。

为此,我现在用的回调函数停机检查这样

stop: function(event, ui) { 
    var video_id = $(ui.item).attr('video-id') 
    var checker = checkifVideoExists(video_id); 

    if (checker) { 
    return false; 
    } else { 
    return true; 
    } 
} 

function checkifVideoExists(videoid) { 
    var flag = false; 
    $("#excersisesinpac .portlet").each(function() { 
    if ($(this).attr('video-id') === "" + videoid + "") { 
     flag = true; 
    } else { 
     flag = false; 
    } 
    }); 
    return flag; 
} 

但不幸的是这种情况只工作时Video6拖动的,而不是Video5(将视频转换为第二容器只)

https://jsfiddle.net/Lphf43wd/9/

+0

你的每一个.portlet'将被假定为最后''.portlet'。当你发现'flag = true'从回调中返回时。 – Justinas

+0

感谢您的意见,但即使我删除了其他条件也给我的问题。 – Pawan

+0

删除'else'部分将无济于事。你需要在'if'里面返回'false' – Justinas

回答

1

您的代码是不是有2个原因工作:

  1. 当你发现你已经在列表中有这个元素时,你不会破坏$.each。需要申请return false;$.eachbreakreturn true继续)。
  2. 您总是在.portlet的内部列表中,因为drag-n-drop会将该元素临时移动到您的列表中。

jsfiddle

+0

Thnaks但是如果我把video2移到FIRST Container然后将它移回第二个容器代码失败 – Pawan