1

我创建了下面的扩展来实现 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; 没有解决我的情况...

我们可以做一些事情,比如扩展函数内部所做的更改将使用简单的逻辑恢复???

提前致谢!!!

-- 高克

4

2 回答 2

0

你可以试试:

 delete $.fn.stickyHeader;
于 2013-05-24T06:22:11.777 回答
0

$(#div).stickyHeader();实际上不是正确的选择器,我假设您的意图是将其应用于所有div标签,即$('div').stickyHeader();.

如果是这种情况,您可以将一个类或 id 添加到您不希望它的 div 并使用类似的东西$('div:not(#exclude)').stickyHeader();来排除它。

于 2013-05-24T07:04:24.447 回答