2013-04-18 70 views
1

當使用jQuery UI拖拽div並將其放入UI可拖拽的div時,我想觸發一個jquery動畫,將div放入該區域。當動畫被觸發時,它會在class =「drag-element」的所有div上被調用,但我只想要特定的拖放元素進行動畫。我試過包括removeClass(「。drag-element」)和addClass(「。animate-element」)並告訴animate()作用於它,但它仍然將動畫應用於所有.drag元素的div。我該如何解決這個問題?通過類使用jQuery的可拖動/可拖拽的目標特定div

JQuery的:

$(function() { 
$(".drag-element").draggable({ containment: ".container" }).removeClass(".drag-vid"); 
$(".drop-field").droppable({ 
    drop: function(event, ui) { 
    $(".drag-element").animate({"left": "+=50px"}, "slow"); 
    $(this) 
     .css("background-color", "silver"); 
    } 
}); 
}); 

http://jsfiddle.net/NBHMT/

回答

2

用途:

ui.draggable.animate({"left": "+=50px"}, "slow"); 

相反的:

$(".drag-element").animate({"left": "+=50px"}, "slow"); 

http://jsfiddle.net/kAG6q/

你的代碼發生了什麼,當你打電話給$(".drag-element").animate(....它選擇所有的drag-element div。相反,drop函數有一個ui參數,它提供了關於使用拖動元素的信息ui.draggable

+0

這可能超出範圍(我會接受,毫無疑問),但是有沒有辦法使動畫不會增加遏制的大小區?當我將元素拖放到可投放區域和動畫觸發器時,會使區域變大。 – Emanegux 2013-04-18 03:36:06

+0

增加收容區域嗎?我沒有看到。但是,唯一的問題是,由於放置在容器中時太多,所以左側定位會超出可投放的容器。 – PSL 2013-04-18 03:47:17

+0

當您嘗試在放入第一個元素後將其他元素拖放到容器中時,如果動畫將第一個div推到區域外,現在可以將它拖到更遠的位置。 – Emanegux 2013-04-18 03:51:20