2016-10-12 108 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