2016-03-21 61 views
0

我從ace演示中複製jqgrid.html,並激活了函數styleCheckbox()來更改多重選擇複選框的樣式,但出現錯誤。當我點擊廣場時,該複選框沒有改變,而當我點擊該行的其他區域時,該複選框正常工作。函數ace中的jqgrid中的styleCheckbox()不能正常工作

功能styelCheckbox()的定義:

function styleCheckbox(table) { 
    $(table).find('input:checkbox').addClass('ace') 
      .wrap('<label />') 
      .after('<span class="lbl align-top" />') 
      .removeClass('cbox'); 

    $('.ui-jqgrid-labels th[id*="_cb"]:first-child') 
      .find('input.cbox[type=checkbox]').addClass('ace') 
      .wrap('<label />').after('<span class="lbl align-top" />') 
      .removeClass('cbox'); 
} 

稱爲後的jqGrid完全加載:

loadComplete : function() { 
    var table = this; 
    setTimeout(function(){ 
     styleCheckbox(table); 
    }, 0); 
}, 

回答

0

我發現在Checkbox & Switch的溶液(見註釋):

有時你不應該將複選框和.lbl包裝在標籤中。 例如在jqGrid插件中,當您啓動一個「編輯記錄」或「新記錄」對話框時,並且想要動態設置複選框的樣式: form.find('input [type = checkbox]') .addClass('ace ('');之後。 複選框不應該包裝在標籤內,因爲它與插件的數據上傳機制衝突。

因此,我刪除.wrap(<label />)函數styleCheckbox(),然後它按照我想要的完美工作。

修改後的代碼:

function styleCheckbox(table) { 
$(table).find('input:checkbox').addClass('ace') 
     .after('<span class="lbl align-top" />') 
     .removeClass('cbox'); 

     $('.ui-jqgrid-labels th[id*="_cb"]:first-child') 
     .find('input.cbox[type=checkbox]').addClass('ace') 
     .after('<span class="lbl align-top" />') 
     .removeClass('cbox'); 

}