我创建了以下扩展,以实现div内表的固定标头
$.fn.stickyHeader = function (options) {
options = $.extend({
setHeaderPercentage: false
}, options);
// this should be a div with overflow. we could traverse closest until we find one, but it's best if
// this
// is just used correctly.
var $clone = this.find('table').clone();
var id = $clone.attr('id') + '-stickyHeader';
if (options.setHeaderPercentage) {
var twidth = this.find('table').innerWidth();
this.find('thead tr').each(function (i, o) {
var $tr = $clone.find('thead tr').eq(i).find('th');
var twidth = 0;
$(o).find('th').each(function (i2, o2) {
twidth += $(o2).width();
});
$(o).find('th').each(function (i2, o2) {
var p = ($(o2).width() / twidth * 100);
$tr.eq(i2).css('width', p + '%');
});
});
}
$clone.find('tbody').remove();
$clone = $('<div>').append($clone);
$clone.css({
'position': 'absolute',
'top': '0',
'left': '0',
'right': '0',
'margin-right': Cobalt.UI.Helpers.getScrollBarWidth() + 'px', // this will always have the margin even if the
'display': 'block'
// scrollbar isn't present
});
$clone.attr('id', id);
var $container = $('<div>');
$container.css({
'margin': '0',
'padding': '0',
'border': '0',
'font-size': '100%',
'font': 'inherit',
'vertical-align': 'baseline',
'position': 'relative'
});
$container.insertBefore(this).append($clone).append(this);
return this;
};
我将上面的扩展称为以下内容:
//个人资料列表的粘性标题
$('#panel').stickyHeader();
我的问题是我需要一种机制来在某个时间点删除此扩展(某些备用条件),我该如何实现它?
编辑:删除$ .fn.stickyHeader;没有为我的案子工作......
我们可以做一些像扩展函数内部所做的更改将使用简单的逻辑恢复吗???
提前致谢!!!
- GOK
答案 0 :(得分:0)
您可以尝试:
delete $.fn.stickyHeader;
答案 1 :(得分:0)
$(#div).stickyHeader();
实际上并不是一个正确的选择器,我假设您打算将其应用于所有div
标记,即$('div').stickyHeader();
。
如果是这种情况,您可以在不想要它的div中添加一个类或ID,并使用类似$('div:not(#exclude)').stickyHeader();
的内容来排除它。