2014-10-29 90 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。