/* * @evtAttrChange * @author : dk * @update : 2012/07/12 */ ;(function ($, window, document, undefined) { $.fn.evtAttrChange = function(opt){ var conf = $.extend(true, { 'targetNode' : ['img,a,[type="image"]'], 'evt' : 'hover', 'method' : { 'imgChange' : { 'set' : false, 'name' : '_hover' }, 'alpharChange' : { 'set' : false, 'from' : '1.0', 'to' : '0.8', 'time' : 1000 }, 'classChange' : { 'set' : false, 'css' : '_hover' }, 'notSelecter' : '.notHover', 'callback' : function(){} } },opt || {}); var $this = this, notHover = conf.notSelecter, strNotHover = notHover.slice(1), target = conf.targetNode.join(','), tmp = conf.method, evt = conf['evt'], chk = ''; for (var prop in tmp) { if (tmp[prop].set) { chk = prop; break; } } var addImageOn = function (elm, str) { var link = elm.attr('src'); if (typeof link === 'undefined') return; var num = link.lastIndexOf('.'), extension = link.slice(num), filename = link.slice(0,num); //console.log(num,extension,filename); return filename && extension ? filename + str + extension : link; }; $this.each(function(){ var findImage = $(this).find(target).not(notHover); //console.log(findImage); var method = { imgChange : function (flag,$elm, obj) { var css = $elm.attr('class'); if (css && css.indexOf(strNotHover) !== -1) return; var hoverPrefix = obj.name ? obj.name : '_hover'; if (flag == 'over') { var filename = addImageOn($elm, hoverPrefix); $elm.attr('src', filename); } else { link = $elm.attr('src') ? $elm.attr('src') : ''; if (link) { $elm.attr('src', link.replace(hoverPrefix, '')); } } }, classChange : function (flag,$elm,obj) { var classname = obj.name ? obj.name : 'hover'; if (flag === 'over') { $elm.addClass(classname); }else { $elm.removeClass(classname); } }, alpharChange : function (flag,$elm,obj) { // $elm.each(function() { if (flag === 'over') { $elm.stop(true,true).fadeTo(obj.time, obj.to); } else { $elm.stop(true,true).fadeTo(obj.time,obj.from); } // }); } }; findImage.not('.activeStyle')[evt](function(){ //for (var i in tmp) { // if (typeof method[i] === 'function' && tmp[i].set){ method[chk]('over',$(this),tmp[chk]); // } //} },function(){ //for (var i in tmp) { // if (typeof method[i] === 'function'){ method[chk]('out',$(this),tmp[chk]); // } //} }); }); }; })(jQuery, this, document, undefined);