2013-09-16 139 views
1

我有一個很大的問題: 我的頁面上有很多div容器,我使用jQuery製作的可拖動類「.element」。 現在我可以動態創建類「元素」的div,並且我想讓它們可拖動。所以我想:簡單的解決方案:我只是打電話jQuery動態調用事件偵聽器

$(「。element」)。draggable();

再次。但是:整個監聽器被執行了兩次,這對我來說是不可接受的,因爲它發送了AJAX請求,我不希望它們被髮送兩次。

所以我開始讓函數只在新創建的元素上調用draggable,我猜這很愚蠢。

所以我的問題:有沒有更好的可能性,因爲現場() - 方法已過時

請幫我(這是在我看來,一個很大的錯誤!)!

親切的問候, 大衛

+0

你可以「上」,而不是使用live – iiro

+0

只需要注意,'on'不一定像'live'一樣工作。我發現,要將偵聽器附加到動態創建的元素來代替'live',您需要以這種方式使用:$('body')。on('click','#myElement',function(){/ /做東西});。 「body」可以用任何容器元素替換,具體取決於你希望獲得的粒度。要定位一切,您只需使用文檔而不是「正文」。 –

回答

0

一個快速的解決辦法是使用data-attr作爲標誌

$(".element:not(data-draggable='1')") 
    .draggable() 
    .attr("data-draggable","1"); 

注:live方法已被棄用,但你可以使用on

2

使用event.stopPropagation()

在event..it將停止事件來觸發兩次

....

我希望它爲你工作...