2013-08-02 6 views
5

Я хотел бы показать qtip только при наведении указателя мыши на цель (<span class="percent100">), но я хочу оставаться видимым до тех пор, пока не сдвигу мышь за пределы общего содержащего элемента (<div class="profileArea"). Вот что я пробовал, но он не работает.Скрыть qTip, когда вне области, содержащей цель

HTML:

//other HTML 

//don't hide tooltip if anywhere in this div 
<div class="profileArea"> 
    <span class="profileInner">Your Profile: 0 
     <span class="fullProfileBar"> 
      <span class="completedProfileBar"></span> 
     </span> 
     //start showing when hover over this span 
     <span class="percent100"> 100%</span> 
    </span> 
</div> 

//other HTML 

Javascript:

$('.percent100').qtip({ 
    id: 'progressBarTooltip', 
    content: { 
     text: 'Text Here' 
    }, 
    position: { 
      my: 'top right', 
      at: 'bottom right', 
      target: $('.percent100') 
    }, 
    show: { 
     event: 'mouseover' //shows when hover .percent100 
    }, 
    hide: { 
     fixed: true, 
     //trying to hide when leave 
     target: $("div[class!='profileArea']") 
    }, 
}); 

ответ

3

Вы должны выполнить что-то вроде: http://jsfiddle.net/78zmG/2/

// Create the tooltips only when document ready 
$(document).ready(function() { 
    // MAKE SURE YOUR SELECTOR MATCHES SOMETHING IN YOUR HTML!!! 
    $('a').qtip({ 
     hide: { 
      delay: 400 
     }, 
     events: { 
      render: function(event, api) { 
       // All elements with class 'safe' will set the 'safe' flag in the API cache 
       $(document.body).delegate('.safe', 'mouseenter mouseleave', function(event) { 
        api.cache.safe = event.type === 'mouseenter'; 

        // This will hide the tooltip if we mouse out of the "safe" elements 
        if(!api.cache.safe) { api.hide(event); } 
       }); 
      }, 
      hide: function(event, api) { 
       // Check we're currently on a "safe" element, and stop the hide if so 
       if(api.cache.safe) { 
        try { event.preventDefault(); } 
        catch (e) {} // Needed for old IE and jQuery versions 
       } 
      } 
     } 
    }); 
}); 

Убедитесь, что QTIP держать открыт, когда вы более красных блоков.

+2

Изменение делегата jquery на метод. «Начиная с jQuery 1.7, .delegate() был заменен методом .on()». –