2011-09-22 32 views
0

我有一個帶有窗體的div。該表格很小,由一個或兩個下拉/文本框組成。我想知道做什麼需要做以下幾點:將jQuery用於工具提示

  • 當我點擊一個鏈接,工具提示彈出與它的形式。它出現在我點擊的鏈接的頂部,這樣當鼠標出現時,鼠標就在它的頂部。
  • 當鼠標退出工具提示的邊界時,它會消失。

做一些谷歌搜索,我發現的所有工具提示示例出現在盤旋在給定的區域。我看到的所有jQuery彈出示例都是模態的,並強制用戶明確關閉它。

有沒有人知道一種方法,我可以有一個工具提示工作如上所述?

回答

2

如果你找不到一個可以工作的插件,你所描述的實現起來非常簡單。

您只需將mousemove事件綁定到文檔,並檢查其目標或其目標的父母是否是您的工具提示。

這個例子適用於觸發按鈕,它緊挨着工具提示,但它可以用於直接觸發觸發器,因爲觸發器不會被徘徊。

$("#trigger").hover(function() { 
    // move the tool tip div into place 
    // show the tool tip 
}, function() {  
    $(document).bind('mousemove.tooltip', function (e) 
    { 
     if (e.target.id !== 'tooltip' && $(e.target).parents('#tooltip').length === 0) 
     { 
      // close tooltip 
      $("#tooltip").hide(); 
      $(document).unbind('mousemove.tooltip'); 
     } 
    }); 
}); 

這是一個基本的小提琴,它作爲描述:

http://jsfiddle.net/5h3Zy/5/

+0

我用這種方法遇到的問題是,只要顯示工具提示,它就會隱藏,因爲瀏覽器認爲光標位於框外。這已經在IE9和Chrome中測試過,都表現出這種行爲。通過爲div指定一個onmouseout處理程序,我也遇到了這個問題。 – MarkP

+0

在添加mousemove處理程序之前是否顯示了該框? – BNL

+0

我從這個樣本取得的代碼有點不同。觸發器是工具提示旁邊的一個按鈕,所以當觸發器按鈕懸停時,它會有一個懸停事件顯示該框。然後該函數的unhover部分將聲明mousemove處理程序。我會把這個添加到這個例子中。 – BNL

0

如果你想使用jquery UI插件使用一個對話框和功能,如下列:

$("#yourDialog").dialog({ autoOpen: false }); 

$("#yourLink").click(function(){ 
     $("#yourDialog").open(); 
}); 

$("#yourDialog").mouseover(function() { 
    }).mouseout(function(){ 
    $(this).close(); 
}); 
+0

由於無法找到'open',因此這不起作用。這是依賴於第三方庫嗎? – MarkP

+0

它使用jquery ui對話框控件。 – BNL

+0

http://jqueryui.com/ – Evan

0
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#mylink').hover(function() { 
     $('#mytooltip').stop(true, true).fadeIn(); 
    }, function() { 
     $('#mytooltip').fadeOut(); 
    }); 
    $('#mytooltip').hover(function() { 
     $('#mytooltip').stop(true, true).fadeIn(); 
    }, function() { 
     $('#mytooltip').fadeOut(); 
    }); 
}) 
</script> 
<div id="mylink">My Link</div> 
<div id="mytooltip'">My Form</div> 

這會在每個元素上放置一個「懸停」事件。只要您的鼠標懸停在任一元素上,它就會調用「stop(true,true)」,從而防止fadeOut發生。一旦鼠標離開元素,工具提示就會消失。