2014-10-29 89 views
0

這是加載完成時jqgrid中的一個函數。自舉模態寬度始終爲0

我有一個通過單擊按鈕打開的引導模式。在那個模式中,我有一個jqgrid。當我調用一個函數在負載完成後,在功能,附加跨度的寬度始終爲0。你可以看到下面的功能:

function columnresize(id) { 

    $(this).parent().append('<span id="widthTest" />'); 

    gridName = this.id; 

    $('#gbox_' + gridName + ' .ui-jqgrid-htable' + gridName).css('width', 'inherit'); 
    $('#' + gridName).parent().css('width', 'inherit'); 

    var columnNames = $("#" + gridName).jqGrid('getGridParam', 'colModel'); 
    var thisWidth; 
    var itmCount = columnNames.length; 
    /*var grid = $('#' + gridName); 
    var iids = grid.getDataIDs();*/ 
    // Loop through Cols 
    for (var itm = 0; itm < itmCount; itm++) { 

    var curObj = $('[aria-describedby=' + gridName + '_' + columnNames[itm].name + ']'); 

    var thisCell = $('#' + gridName + '_' + columnNames[itm].name + ' div'); 
    $('#widthTest').html(thisCell.text()).css({ 
    'font-family': thisCell.css('font-family'), 
    'font-size': thisCell.css('font-size'), 
    'width': thisCell.css('width'), 
    'font-weight': thisCell.css('font-weight') 
    }); 


    var maxWidth = Width = $('#widthTest').width() + 17; 
    //var maxWidth = 0; 
    var itm2Count = curObj.length; 
      // Loop through Rows 
      for (var itm2 = 0; itm2 < itm2Count; itm2++) { 

      var thisCell = $(curObj[itm2]); 

      $('#widthTest').html(thisCell.html()).css({ 
      'font-family': thisCell.css('font-family'), 
      'font-size': thisCell.css('font-size'), 
      'font-weight': thisCell.css('font-weight') 
      }); 

      thisWidth = $('#widthTest').width(); 
      if (thisWidth > maxWidth) {maxWidth = thisWidth+10;} 
      } 

    $('#' + gridName + ' .jqgfirstrow td:eq(' + itm + '), #' + gridName + '_' + columnNames[itm].name).width(maxWidth).css('min-width', maxWidth+17); 
    $('#' + gridName + ' .jqgfirstrow td:eq(' + 0 + '), #' + gridName + '_' + columnNames[0].name).width('30').css('min-width', '30px'); 
    //grid.setRowData (iids[itm], false, {height: 30}); 

    } 
    $('#widthTest').remove(); 
} 

我所說的上述功能的負載完整的jqGrid的是這樣的:

loadComplete: function() { 
columnresize.call(this, 'Table'); 
} 

寬度$('#widthTest').width()在行:

var maxWidth = Width = $('#widthTest').width() + 17; 

始終爲0!

任何想法?

+0

@Justinas所以,我怎樣才能獲得隱藏的DOM元素的寬度? – 2014-10-29 08:30:27

回答

0

了大量的研究後,我發現,因爲它是一個隱藏的DOM元素,我必須使用this

jQuery來獲取隱藏的DOM元素的實際大小。

感謝@Justinas。