jQuery UI选项卡激活事件无法正常运行

时间:2014-03-04 15:07:53

标签: javascript jquery jquery-ui jquery-ui-tabs

我有一个带有不同标签的div,每个标签都包含一个表格。内容将动态加载到每个表中,因此我需要一种方法来设置每个表的th和tr元素的高度。例如,如果table1的高度为50px,则table2的高度也需要为50px。

我正在使用的代码有效,但由于某种原因,它在每个制表符开关上添加了一个像素,每个元素的高度。例如,如果我单击第二个选项卡,则所有tr元素将为50px。如果我单击第一个选项卡然后再返回第二个选项卡,则tr元素将更改为51px高。如果我单击返回第一个选项卡然后再单击第二个选项卡,tr元素将更改为52px高等等。

这是我的代码:

$( "#new-locations-tabs" ).tabs({
  activate: function(events, ui) {
    var getHeadingHeight = $("#new-locations-tabs .ui-tabs-panel:visible .right-table th").css("height");
    $("#new-locations-tabs .ui-tabs-panel:visible .left-table th").css("height", getHeadingHeight);

    var getRowHeight = $("#new-locations-tabs .ui-tabs-panel:visible .left-table td").css("height");
    $("#new-locations-tabs .ui-tabs-panel:visible .right-table td, #new-locations-tabs .ui-tabs-panel:visible .left-table td").css("height", getRowHeight);
  }
});

http://jsfiddle.net/KFcYS/

1 个答案:

答案 0 :(得分:0)

  

“请注意,元素的计算样式可能与样式表中为该元素指定的值不同。”

http://api.jquery.com/css

可能会发生一些计算四舍五入。请尝试使用height()outerHeight()

  

“.css(”height“)和.height()之间的区别在于后者返回无单位像素值(例如,400),而前者返回单位完整的值(例如,400px)当。需要在数学计算中使用元素的高度时,建议使用.height()方法。“

http://api.jquery.com/height