$(function($){ $.fn.hoverManager = function(options) { var defaults = { clearTarget: "#wrapper", mainArea: "#mainArea" } , setting = $.extend(defaults, options) , targetObj = $(this) , touch = window.ontouchstart===null ? true : false , hoverMainArea = targetObj.find(".hoverMainArea") , hoverMainList = targetObj.find(".hoverMainList") , hoverThumbList = targetObj.find(".hoverThumbList").children() , clearHover = function(e) { if(e.type=='mouseleave' || $(e.target).parents(setting.mainArea).length==0) { hoverMainArea.html(''); hoverThumbList.removeClass('active'); } } ; // event set targetObj.find("hoverMainList").remove(); targetObj.each(function() { $(this).hover(function(){}, clearHover); }); hoverThumbList.each(function() { $(this).click( function(e){ if(touch) e.preventDefault(); } ).hover( function() { hoverThumbList.removeClass('active'); $(this).addClass('active'); var hoverName = $(this).data('hover-name'); hoverMainArea.html(hoverMainList.find('.'+hoverName).html()); }, function() { } ); }); if(touch) { $(setting.clearTarget).bind('touchstart', clearHover); } }; });