Colortip 自定义tips的颜色
JavaScript Code
- (function($){
- $.fn.colorTip = function(settings){
- var defaultSettings = {
- color : 'yellow',
- timeout : 500
- }
- var supportedColors = ['red','green','blue','white','yellow','black'];
- /* Combining the default settings object with the supplied one */
- settings = $.extend(defaultSettings,settings);
- /*
- * Looping through all the elements and returning them afterwards.
- * This will add chainability to the plugin.
- */
- return this.each(function(){
- var elem = $(this);
- // If the title attribute is empty, continue with the next element
- if(!elem.attr('title')) return true;
- // Creating new eventScheduler and Tip objects for this element.
- // (See the class definition at the bottom).
- var scheduleEvent = new eventScheduler();
- var tip = new Tip(elem.attr('title'));
- // Adding the tooltip markup to the element and
- // applying a special class:
- elem.append(tip.generate()).addClass('colorTipContainer');
- // Checking to see whether a supported color has been
- // set as a classname on the element.
- var hasClass = false;
- for(var i=0;i<supportedColors.length;i++)
- {
- if(elem.hasClass(supportedColors[i])){
- hasClass = true;
- break;
- }
- }
- // If it has been set, it will override the default color
- if(!hasClass){
- elem.addClass(settings.color);
- }
- // On mouseenter, show the tip, on mouseleave set the
- // tip to be hidden in half a second.
- elem.hover(function(){
- tip.show();
- // If the user moves away and hovers over the tip again,
- // clear the previously set event:
- scheduleEvent.clear();
- },function(){
- // Schedule event actualy sets a timeout (as you can
- // see from the class definition below).
- scheduleEvent.set(function(){
- tip.hide();
- },settings.timeout);
- });
- // Removing the title attribute, so the regular OS titles are
- // not shown along with the tooltips.
- elem.removeAttr('title');
- });
- }
- /*
- / Event Scheduler Class Definition
- */
- function eventScheduler(){}
- eventScheduler.prototype = {
- set : function (func,timeout){
- // The set method takes a function and a time period (ms) as
- // parameters, and sets a timeout
- this.timer = setTimeout(func,timeout);
- },
- clear: function(){
- // The clear method clears the timeout
- clearTimeout(this.timer);
- }
- }
- /*
- / Tip Class Definition
- */
- function Tip(txt){
- this.content = txt;
- this.shown = false;
- }
- Tip.prototype = {
- generate: function(){
- // The generate method returns either a previously generated element
- // stored in the tip variable, or generates it and saves it in tip for
- // later use, after which returns it.
- return this.tip || (this.tip = $('<span class="colorTip">'+this.content+
- '<span class="pointyTipShadow"></span><span class="pointyTip"></span></span>'));
- },
- show: function(){
- if(this.shown) return;
- // Center the tip and start a fadeIn animation
- this.tip.css('margin-left',-this.tip.outerWidth()/2).fadeIn('fast');
- this.shown = true;
- },
- hide: function(){
- this.tip.fadeOut();
- this.shown = false;
- }
- }
- })(jQuery);
原文地址:http://www.freejs.net/article_jquerywenzi_479.html