/* * jQuery.BiggerLink v2.0.1 * http://www.ollicle.com/eg/jquery/biggerlink/ * * Copyright (c) 2009 Oliver Boermans * http://creativecommons.org/licenses/MIT/ * * 2009-11-22 (22 Nov 2009) */ (function($) { $.fn.biggerlink = function(options) { // Default settings var settings = { biggerclass:'bl-bigger', // class added to the first contained link and others that trigger it hoverclass:'bl-hover', // class added to parent element on hover/focus hoverclass2:'bl-hover2', // class added to parent element on hover/focus of other links clickableclass:'bl-hot', // class added to parent element with behaviour otherstriggermaster: true, // will all links in containing biggerlink element trigger the first link follow: 'auto' // follow master link on click? : 'auto',true,false }; if(options) { $.extend(settings, options); } $(this).filter(function(){ return $('a',this).length > 0; }).addClass(settings.clickableclass).css('cursor', 'pointer').each(function(i){ // store element references var big = $(this).data('biggerlink',{hovered:false,focused:false,hovered2:false,focused2:false}); var links = { all: $('a',this), big: $(this), master: $('a:first',this).data('biggerlink',{status:'master'}).addClass(settings.biggerclass), other: $('a',this).not($('a:first',this)).data('biggerlink',{status:'other'}) }; $('a',this).andSelf().each(function(){ var newdata = $.extend($(this).data('biggerlink'),links); $(this).data('biggerlink',newdata); }); // Add title of first link with title to parent if not already set var thistitle = big.attr('title'); var newtitle = big.data('biggerlink').master.attr('title'); if(newtitle && !thistitle) { big.attr('title', newtitle); } // events on biggerlink element big .mouseover(function(event){ window.status = $(this).data('biggerlink').master.get(0).href; $(this).addClass(settings.hoverclass); $(this).data('biggerlink').hovered = true; }) .mouseout(function(event){ window.status = ''; if(!$(this).data('biggerlink').focused) { $(this).removeClass(settings.hoverclass); } $(this).data('biggerlink').hovered = false; }) .bind('click',function(event){ // if clicked direct or non-link if(!$(event.target).closest('a').length) { $(this).data('biggerlink').master.trigger({type:'click',source:'biggerlink'}); event.stopPropagation(); } }); // focus/blur links.all .bind('focus',function(){ $(this).data('biggerlink').big.addClass(settings.hoverclass); $(this).data('biggerlink').big.data('biggerlink').focused = true; }).bind('blur',function(){ if(!$(this).data('biggerlink').big.data('biggerlink').hovered) { $(this).data('biggerlink').big.removeClass(settings.hoverclass); } $(this).data('biggerlink').big.data('biggerlink').focused = false; }); // click/focus/blur event on master (first) link within biggerlink links.master .bind('click',function(event){ if(event.source == 'biggerlink') { if(settings.follow === true || settings.follow == 'auto' && event.result !== false) { /*追加*/ if($(this).attr("target") == "_blank"){ window.open($(this).attr('href')); }else{ window.location = $(this).attr('href'); } } else { event.stopPropagation(); } } }); // links other than the first (master) link also within biggerlink // other links are independent if(settings.otherstriggermaster) { links.other.addClass(settings.biggerclass) .bind('click',function(event){ // trigger click events on master link instead $(this).data('biggerlink').master.trigger({type:'click',source:'biggerlink'}); // stop this link being followed event.preventDefault(); // prevent events on parent elements being triggered event.stopPropagation(); }); } // other links are slaves of master link else { links.other .bind('focus',function(){ $(this).data('biggerlink').big.addClass(settings.hoverclass2); $(this).data('biggerlink').big.data('biggerlink').focused2 = true; }) .bind('blur',function(){ if(!$(this).data('biggerlink').big.data('biggerlink').hovered2) { $(this).data('biggerlink').big.removeClass(settings.hoverclass2); } $(this).data('biggerlink').big.data('biggerlink').focused2 = false; }) .bind('mouseover',function(event){ $(this).data('biggerlink').big.addClass(settings.hoverclass2); $(this).data('biggerlink').big.data('biggerlink').hovered2 = true; event.stopPropagation(); }) .bind('mouseout',function(event){ if(!$(this).data('biggerlink').big.data('biggerlink').focused2) { $(this).data('biggerlink').big.removeClass(settings.hoverclass2); } $(this).data('biggerlink').big.data('biggerlink').hovered2 = false; event.stopPropagation(); }); if(!links.other.attr('title')) { links.other.attr('title',''); } } }); return this; }; })(jQuery); $(function() { $('#courseInfo ul.course li').biggerlink(); $('#classroom ul li').biggerlink(); $('#classroomList ul li').biggerlink(); $('section.all ul li').biggerlink(); $('#employee ul li').biggerlink(); $('#courseList section ul li').biggerlink(); });