2013-08-05 81 views
1

我正在使用下面的代碼來包裝複選框。jQuery wrap()on()

$('input[type="checkbox"]').wrap('<div class="checkableBox"/>'); 

這在第一頁上運行良好,但每當使用AJAX從數據庫加載一些新的複選框時,它停止包裝它們。

那麼如何使用jQuery on()來防止aobe問題呢?還是有其他方法可以解決這個問題嗎?

問候

回答

2

調用它在阿賈克斯成功

$.ajax({ 
    success:function(){ 
     $('input[type="checkbox"]').each(function(){ 
      if(!$(this).parent().is('.checkableBox')) 
      { 
       $(this).wrap('<div class="checkableBox" />'); 
      } 
     }); 
    } 
}); 
+0

我也檢查過已包裝的複選框。 –

0

這是因爲,當你第一次把它稱爲「額外」的元素不是DOM的一部分。把你的代碼放到一個函數:

function wrapChecks(){ 
    $('input[type="checkbox"]').wrap('<div class="checkableBox"/>'); 

} 

然後調用頁面加載這一功能,然後再 Ajax回調。

+1

基本上是一個很好的方法,但不是會導致多個'div's周圍的已經做完複選框被包裹?更好:「AJAX」成功函數中的包裝應該僅在新添加的DOM元素上執行,而在所有的input [type = checkbox]元素上執行* not *。 – cars10m

0

你是否調用jquery函數來執行這個命令ajax更新後頁面?如果不是,你應該這樣做。
正如Jose所建議的那樣,把這個包裹放在一個函數中。
一旦ajax查詢將更多複選框加載到網站中,請執行一個檢查(例如:.change()事件到父分區並調用該函數以包裝其中的新數據(如果尚未包裝的話) )
您可以使用.parent()函數來檢查父div是否爲「可選框」。如果不是,則將新加載的複選框與div可複選框包裝起來。再次