2011-03-06 46 views
0

我有這樣的功能:JQuery的事件重新編排後的div不再回應

$(function() { 
    $('.upvote').click(function() { voteActions(upvoteID, this.id); }); 
    $('.downvote').click(function() { voteActions(downvoteID, this.id); }); 
}); 

如果我點擊給予好評按鈕這一事件做出響應,並正常工作,並總是這樣。那裏沒有問題。不過,我還有另一個按鈕,可以根據添加的日期對提交進行排序。這重新安排所有的div提交,並在他們重新安排他們各自的upvote和downvote圖標不再工作後。如果我在click功能代碼中添加警報,那麼它只會在div被排序之前觸發。由於某種原因,提交的內容會被點擊功能排序。在排序後,它不再被調用。奇怪的是,整理工作完美無瑕。此外,我在前後檢查了螢火蟲,除了按不同的順序外,所有內容都完全一樣。 ids,名稱和類都是相同的,但它們的JQuery函數不再響應。

我有一種感覺,這與JQuery文件在重新安排提交後沒有被重新處理有關,但我不知道該怎麼做。對於Javascript和JQuery,我還是一個相當新的東西。有什麼想法嗎?

編輯:這裏是重新安排功能:

(function($) { 
    $.fn.reOrder = function(array) { 
     return this.each(function() { 
      for (var i = 0; i < array.length; i++) 
       array[i][0] = $('div#' + array[i][0]); 

      $(this).empty(); 

      for (var i = 0; i < array.length; i++) 
       $(this).append(array[i][0]); 
     }); 
    } 
})(jQuery); 
+1

,如果他們動態變化的嘗試jQuery的現場 – kobe 2011-03-06 02:57:24

+0

這是否重新排序的div或正義之舉呢? – 2011-03-06 02:57:38

+0

你如何整理你的意見書?你是僅僅將它們排序在客戶端,還是使用AJAX重新創建列表? – 2011-03-06 02:58:29

回答

2

我想你可能有可能在這種情況下使用動態生成您的代碼住綁定,可以兩個問題

1)這裏指的

http://api.jquery.com/live/

2)相同的檢查類名,如果他們都在變化,不會有與任何問題jQuery的。

+0

Number 1 was it!非常感謝!我一直在摸索這個小時,而我所要做的只是改變它:'$('。'+ upvoteID).click(function (){voteActions(upvoteID,this.id);});'to this:'$('。'+ upvoteID).live(「click」,function(){voteActions(upvoteID,this.id);}) ;' – 2011-03-06 03:02:34

+0

@overstockflaw很好聽, – kobe 2011-03-06 03:04:50

+0

FWIW,如果函數調用後類名改變了,它應該沒有什麼區別,因爲JQuery只用它來標識應用事件處理程序的元素。 – 2011-03-06 04:02:38

0

使用.live如果正在你的表單元素重新創建:

$(function() { 
    $('.upvote').live('click', function() { voteActions(upvoteID, this.id); }); 
    $('.downvote').live('click', function() { voteActions(downvoteID, this.id); }); 
});