Jquery 1.9+后不支持jQuery.browser的解决方式

有次工作碰到要做表头固定的js,发现高版本的Jquery不支持jQuery.browser属性,可以通过以下办法解决:

jquery.fixedtableheader.min.js:


/* Copyright (c) 2009 Mustafa OZCAN (http://www.mustafaozcan.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * Version: 1.0.2
 * Requires: jquery.1.3+
 */
jQuery.fn.fixedtableheader = function(options) {

	//解决jquyer 1.9+ 不支持jQuery.browser start
	if(jQuery.browser) return; 

	jQuery.browser = {}; 
	jQuery.browser.mozilla = false; 
	jQuery.browser.webkit = false; 
	jQuery.browser.opera = false; 
	jQuery.browser.msie = false; 

	var nAgt = navigator.userAgent; 
	jQuery.browser.name = navigator.appName; 
	jQuery.browser.fullVersion = ''+parseFloat(navigator.appVersion); 
	jQuery.browser.majorVersion = parseInt(navigator.appVersion,10); 
	var nameOffset,verOffset,ix; 

	// In Opera, the true version is after "Opera" or after "Version" 
	if ((verOffset=nAgt.indexOf("Opera"))!=-1) { 
	jQuery.browser.opera = true; 
	jQuery.browser.name = "Opera"; 
	jQuery.browser.fullVersion = nAgt.substring(verOffset+6); 
	if ((verOffset=nAgt.indexOf("Version"))!=-1) 
	jQuery.browser.fullVersion = nAgt.substring(verOffset+8); 
	} 
	// In MSIE, the true version is after "MSIE" in userAgent 
	else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) { 
	jQuery.browser.msie = true; 
	jQuery.browser.name = "Microsoft Internet Explorer"; 
	jQuery.browser.fullVersion = nAgt.substring(verOffset+5); 
	} 
	// In Chrome, the true version is after "Chrome" 
	else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) { 
	jQuery.browser.webkit = true; 
	jQuery.browser.name = "Chrome"; 
	jQuery.browser.fullVersion = nAgt.substring(verOffset+7); 
	} 
	// In Safari, the true version is after "Safari" or after "Version" 
	else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { 
	jQuery.browser.webkit = true; 
	jQuery.browser.name = "Safari"; 
	jQuery.browser.fullVersion = nAgt.substring(verOffset+7); 
	if ((verOffset=nAgt.indexOf("Version"))!=-1) 
	jQuery.browser.fullVersion = nAgt.substring(verOffset+8); 
	} 
	// In Firefox, the true version is after "Firefox" 
	else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { 
	jQuery.browser.mozilla = true; 
	jQuery.browser.name = "Firefox"; 
	jQuery.browser.fullVersion = nAgt.substring(verOffset+8); 
	} 
	// In most other browsers, "name/version" is at the end of userAgent 
	else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < 
	(verOffset=nAgt.lastIndexOf('/')) ) 
	{ 
	jQuery.browser.name = nAgt.substring(nameOffset,verOffset); 
	jQuery.browser.fullVersion = nAgt.substring(verOffset+1); 
	if (jQuery.browser.name.toLowerCase()==jQuery.browser.name.toUpperCase()) { 
	jQuery.browser.name = navigator.appName; 
	} 
	} 
	// trim the fullVersion string at semicolon/space if present 
	if ((ix=jQuery.browser.fullVersion.indexOf(";"))!=-1) 
	jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix); 
	if ((ix=jQuery.browser.fullVersion.indexOf(" "))!=-1) 
	jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix); 

	jQuery.browser.majorVersion = parseInt(''+jQuery.browser.fullVersion,10); 
	if (isNaN(jQuery.browser.majorVersion)) { 
	jQuery.browser.fullVersion = ''+parseFloat(navigator.appVersion); 
	jQuery.browser.majorVersion = parseInt(navigator.appVersion,10); 
	} 
	jQuery.browser.version = jQuery.browser.majorVersion; 
	//解决jquyer 1.9+ 不支持jQuery.browser end

    var settings = jQuery.extend({
        headerrowsize: 1,
        highlightrow: false,
        highlightclass: "highlight"
    }, options);
    this.each(function(i) {
        var $tbl = $(this);
        var $tblhfixed = $tbl.find("tr:lt(" + settings.headerrowsize + ")");
        var headerelement = "th";
        if ($tblhfixed.find(headerelement).length == 0)
            headerelement = "td";
        if ($tblhfixed.find(headerelement).length > 0) {
            $tblhfixed.find(headerelement).each(function() {
                $(this).css("width", $(this).width());
            });
            var $clonedTable = $tbl.clone().empty();
            var tblwidth = GetTblWidth($tbl);
            $clonedTable.attr("id", "fixedtableheader" + i).css({
                "position": "fixed",
                "top": "0",
                "left": $tbl.offset().left
            }).append($tblhfixed.clone()).width(tblwidth).hide().appendTo($("body"));
            if (settings.highlightrow)
                $("tr:gt(" + (settings.headerrowsize - 1) + ")", $tbl).hover(function() {
                    $(this).addClass(settings.highlightclass);
                }, function() {
                    $(this).removeClass(settings.highlightclass);
                });
            $(window).scroll(function() {
                if (jQuery.browser.msie && jQuery.browser.version == "6.0")
                    $clonedTable.css({
                        "position": "absolute",
                        "top": $(window).scrollTop(),
                        "left": $tbl.offset().left
                    });
                else
                    $clonedTable.css({
                        "position": "fixed",
                        "top": "0",
                        "left": $tbl.offset().left - $(window).scrollLeft()
                    });
                var sctop = $(window).scrollTop();
                var elmtop = $tblhfixed.offset().top;
                if (sctop > elmtop && sctop <= (elmtop + $tbl.height() - $tblhfixed.height()))
                    $clonedTable.show();
                else
                    $clonedTable.hide();
            });
            $(window).resize(function() {
                if ($clonedTable.outerWidth() != $tbl.outerWidth()) {
                    $tblhfixed.find(headerelement).each(function(index) {
                        var w = $(this).width();
                        $(this).css("width", w);
                        $clonedTable.find(headerelement).eq(index).css("width", w);
                    });
                    $clonedTable.width($tbl.outerWidth());
                }
                $clonedTable.css("left", $tbl.offset().left);
            });
        }
    });
    function GetTblWidth($tbl) {
        var tblwidth = $tbl.outerWidth();
        return tblwidth;
    }
};


演示DOME:


演示DOME:




    
    jquery.fixedtableheader.min.js Demo Page (Created Mustafa OZCAN)
    
    
    
    


    
jQuery Fixed Table Header Demo Page





Third Option = highlightclass: "highlight"
Default value is "highlight". This option set highlighted row's css class.
If you are set "highlightrow: true" you can set highlightclass.



TIME TABLE
STATION A STATION B
Work DaysSaturdaySundayWork DaysSaturdaySunday
05:5006:0006:2006:2006:3007:25
06:1006:1506:4006:5007:0007:45
06:3006:3007:0007:1007:1508:00
06:4506:4507:2007:3007:3008:20
?0?707:00?0?707:0007:3507:5007:4508:35
07:1007:1507:5008:1008:0008:50
?0?707:10?0?707:3008:0008:3008:2009:00
?0?707:20?0?707:4008:1008:4508:3509:15
07:3007:5008:2008:5508:5009:30
?0?707:40?0?708:0008:3009:0509:0509:45
07:5008:1008:5009:1509:1510:00
08:0008:2009:1009:3009:3010:15
?0?708:15?0?708:3009:3009:4509:4010:35
08:1508:4509:4510:0009:5010:50
08:3009:0010:0010:1510:0511:05
08:5009:1510:1010:3010:2011:15
09:1009:3010:2010:4510:3011:25
09:3009:4510:3511:0010:4511:45
09:4510:0010:4511:1511:0011:55
10:0010:1010:5511:3011:1512:05
10:1510:2511:1011:4511:3012:20
10:3010:3511:2512:0011:4512:35
10:4510:5011:4012:1512:0012:50
11:0011:0511:5512:3512:2013:05
11:1511:2012:1012:5512:3513:20
11:3011:3512:2013:1012:5013:30
11:4511:5512:3513:2513:0013:45
12:0512:1512:5013:4013:2014:00
12:2012:3513:0014:0013:4014:10
12:3512:5013:1014:2013:5514:20
12:5013:0513:2514:3514:1014:35
13:0513:2513:4014:5514:2514:50
13:2013:4513:5515:1014:4015:05
13:3514:0514:1015:3015:0015:20
13:5014:2014:2515:5015:2015:35
14:1014:3514:3516:0515:4015:45
14:3014:5514:5016:2516:1016:00
14:5015:1015:0516:4016:3016:15
15:1015:2515:1517:0016:5016:25
15:3015:4015:25?0?717:10?0?717:0516:35
15:5015:5515:4017:1517:2016:50
16:0516:1515:5517:3017:3517:05
16:2016:3516:1017:4517:5017:20
16:3516:5516:2517:5518:1017:30
16:5517:1016:4018:1518:3017:50
17:1517:3016:50?0?718:30?0?718:4518:00
17:3017:4517:0518:4519:0018:20
17:4518:0017:2519:0519:1518:30
18:0018:1517:4019:2019:3018:45
?0?718:10?0?718:3017:55?0?719:35?0?719:4519:00
18:2018:5018:1519:4520:0019:15
18:4019:1018:3520:0520:2019:40
19:0019:3018:5020:2520:4019:55
19:1519:5019:0520:4021:0020:10
19:3020:1019:2020:5521:2020:25
19:4520:3519:3521:1521:4520:40
20:0521:0019:5521:3022:1021:00
20:3021:3020:1521:5022:4021:25
21:0022:0020:4522:1023:1021:55
21:3021:1022:4022:20
22:0023:10


你可能感兴趣的:(Jquery,JavaScript)