//第二题 1 (function($){ $.fn.shadow=function(opts){ var options = $.extend({},$.fn.shadow.defaults,opts); return this.each(function(){ var $originalElement=$(this); for(var i=0;i<options.copies;i++){ var offset = options.copyOffset(i); $originalElement .clone() .css({ position:'absolute', left:$originalElement.offset().left+offset.x, top:$originalElement.offset().top+offset.y, margin:0, zIndex:options.zIndex, opacity:options.opacity }) .appendTo('body'); } }); } $.fn.shadow.defaults={ copies:5, opacity:0.1, zIndex:-1, copyOffset:function(index){ return {x:index,y:index}; } }; })(jQuery); //第二题 2 (function($){ $.widget('ljq.tooltip',{ options:{ offsetX:10, offsetY:10, content:function(){ return $(this).data('tooltip-text'); } }, _create:function(){ this._tooltipDiv=$('<div></div>') .addClass('ljq-tooltip-text '+ 'ui-widget ui-state-highlight ui-corner-all') .hide().appendTo('body'); this.element .addClass('ljq-tooltip-trigger') .bind('mouseenter.ljq-tooltip',$.proxy(this._open,this)) .bind('mouseleave.ljq-tooltip',$.proxy(this._close,this)); }, _open:function(){ if(!this.options.disabled){ var elementOffset = this.element.offset(); this._tooltipDiv.css({ left:elementOffset.left+this.options.offsetX, top:elementOffset.top+this.element.height()+this.options.offsetY }).text(this.options.content.call(this.element[0])) this._tooltipDiv.show(); this._trigger('open'); this.isOpen(true); } }, _close:function(){ this._tooltipDiv.hide(); this._trigger('close'); this.isOpen(false); }, destroy:function(){ this._tooltipDiv.remove(); this.element .removeClass('ljq-tooltip-trigger') .unbind('.ljq-tooltip'); $.Widget.prototype.destroy.apply(this,arguments); }, open:function(){ this._open(); }, close:function(){ this._close(); }, isOpen:function(tag){ if(tag){ console.log("true"); return true; }else{ console.log("false"); return false; } } }); })(jQuery); //第三题 $(document).ready(function(){ $('a').bind('tooltipopen',function(){ console.log('open'); }); }); //第四题 我的理解不知道对不对,参考一下就好了 var con; (function($){ $.widget('ljq.tooltip',{ options:{ offsetX:10, offsetY:10, content:function(){ //alert(this); var urlstr = $(this).attr('href'); $.ajax({ url:urlstr, type:'get', dataType:'html', success:function(data){ con=data; },error:function(){ } }); return con; } }, _create:function(){ this._tooltipDiv=$('<div></div>') .addClass('ljq-tooltip-text '+ 'ui-widget ui-state-highlight ui-corner-all') .hide().appendTo('body'); this.element .addClass('ljq-tooltip-trigger') .bind('mouseenter.ljq-tooltip',$.proxy(this._open,this)) .bind('mouseleave.ljq-tooltip',$.proxy(this._close,this)); }, _open:function(){ if(!this.options.disabled){ var elementOffset = this.element.offset(); this._tooltipDiv.css({ left:elementOffset.left+this.options.offsetX, top:elementOffset.top+this.element.height()+this.options.offsetY }).text(this.options.content.call(this))//这里表示,content函数内部的this指向的是括号内的参数 this._tooltipDiv.show(); this._trigger('open'); this.isOpen(true); } }, _close:function(){ this._tooltipDiv.hide(); this._trigger('close'); this.isOpen(false); }, destroy:function(){ this._tooltipDiv.remove(); this.element .removeClass('ljq-tooltip-trigger') .unbind('.ljq-tooltip'); $.Widget.prototype.destroy.apply(this,arguments); }, open:function(){ this._open(); }, close:function(){ this._close(); }, isOpen:function(tag){ if(tag){ console.log("true"); return true; }else{ console.log("false"); return false; } } }); })(jQuery); //第五题 仅是打开时用到了effect (function($){ $.widget('ljq.tooltip',{ options:{ offsetX:10, offsetY:10, effect:'clip', content:function(){ return $(this).data('tooltip-text'); } }, _create:function(){ this._tooltipDiv=$('<div></div>') .addClass('ljq-tooltip-text '+ 'ui-widget ui-state-highlight ui-corner-all') .hide().appendTo('body'); this.element .addClass('ljq-tooltip-trigger') .bind('mouseenter.ljq-tooltip',$.proxy(this._open,this)) .bind('mouseleave.ljq-tooltip',$.proxy(this._close,this)); }, _open:function(){ if(!this.options.disabled){ var elementOffset = this.element.offset(); this._tooltipDiv.css({ left:elementOffset.left+this.options.offsetX, top:elementOffset.top+this.element.height()+this.options.offsetY }).text(this.options.content.call(this.element[0])) this._tooltipDiv.effect(this.options.effect);//注意这里,打开时使用到了 this._trigger('open'); this.isOpen(true); } }, _close:function(){ this._tooltipDiv.hide(); this._trigger('close'); this.isOpen(false); }, destroy:function(){ this._tooltipDiv.remove(); this.element .removeClass('ljq-tooltip-trigger') .unbind('.ljq-tooltip'); $.Widget.prototype.destroy.apply(this,arguments); }, open:function(){ this._open(); }, close:function(){ this._close(); }, isOpen:function(tag){ if(tag){ console.log("true"); return true; }else{ console.log("false"); return false; } } }); })(jQuery);