我将筛选器SELECT和INPUT生成到数据表的页脚TH。我希望这些项目的宽度与父TH的宽度匹配(减去一些边距)。

我的TH元素具有.datainput或.dataselect类,可以知道是否应生成SELECT或INPUT。

我创建了此脚本,该脚本在加载AJAX数据并生成输入之后被调用:

function fnFixElementsTH() {

  // Fix data inputs
  $('.datainput').each(function(i) {
    var thWidth = $(this).width();
    $(this).children().width(thWidth);
  });

  // Fix data selects
  $('.dataselect').each(function(i) {
    var thWidth = $(this).width() - 10;
    $(this).children().width(thWidth);
  });
}


我将以下CSS用于TH:

padding: 3px 0px 3px 10px;
font-weight: bold;
font-weight: normal;


并选择:

word-wrap: normal;
margin-right: 10px;


在铬中,它工作得很好:


但是在Firefox中,SELECT的大小无效:


我在铬和Firefox中打印了TH和SELECT的宽度,这是铬的第二列的结果:



在Firefox中:



您能告诉我我做错了什么,还是建议更好的解决方案?

最佳答案

问题出在.width()jQuery API中。 FF有一些问题。您可以使用.css设置宽度。

  $(".dataselect").each(function(i) {
    var thWidth = $(this).width() - 10;
    $(this).children().css('width',thWidth);
  });


解决方案提琴:jsfiddle.net/vfNRS/1

10-06 04:25