2012-07-30 109 views
3

我在這裏有一些代碼,當你將鼠標放在另一個元素上時,它應該在1個元素上改變display: nonedisplay: block如何使用jQuery顯示HTML元素?

HTML:

<li onmouseover="popup('Ipsum');">Lorem</li>

的Javascript:

$(document).ready(function(){ 
    $("body").append('<div id="pup"></div>'); // Appends a popup div to the page 
    $(document).mousemove(function(e){ 
     var x,y;         // This sets the mouse 
                // coordinates into 2 
     x = $(document).scrollLeft() + e.clientX; // variables in order to 
     y = $(document).scrollTop() + e.clientY; // display the tooltip 
    });           // relative to mouse postition 

    function popup(text) 
    { 
     $('#pup').html(text); // This is supposed to enter text into the tooltip 
     $('#pup').show();  // div and change it from display: none to 
           // display: block 
    } 

目前,DIV存在(但你看不到它,因爲它是在CSS設置爲display: none ,但是當你將鼠標懸停在li上時,它不顯示。謝謝!

+0

看一看移動彈出函數的定義中的$(document)。就緒之外(... )代碼塊。它應該在全球範圍內定義。 – 2012-07-30 00:25:55

+2

另一種方法是:只要執行'

  • Lorem
  • ' – Niloct 2012-07-30 00:29:19

    回答

    1

    我第二個Russ C的評論。將彈出菜單移出$(document).ready,但不能作爲全局函數。將其指定爲匿名函數並將jQuery作爲參數。

    不知道你想要幫助鼠標事件。這個出現在鼠標下面。 「標題」屬性只能保存純文本,所以如果你想要的東西不那麼強大,那就去吧。

    試試這個

    $(document).ready(function(){ 
         var loremHTML = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. <a href=''>Vivamus non elit risus</a>, a dignissim ligula." 
         $("#lorem").hover(function() {$.popup(loremHTML)},function() {$("#pup").hide().remove()}); 
         $(document).mousemove(function(ev) { 
          $.mousePos = {  //Assign mousePos to the jQuery object 
           x: ev.pageX, //x coordinate 
           y: ev.pageY  //y coordinate 
          }; 
         }); 
        }); 
    
        (function($) { 
         $.popup = $.fn.popup = function(text) { 
          $("body").append('<div id="pup"></div>'); 
          $('#pup').show().css({ 
           "position":"absolute", 
           "left":$.mousePos.x, 
           "top":$.mousePos.y}) 
           .html(text); 
         } 
        })(jQuery); 
    

    CSS

     #pup { 
          background:#ddd; 
          padding:5px; 
          width:20%; 
         } 
    

    HTML

    <span id="lorem">Lorem</span> 
    
    +0

    就可以簡化這個工具提示的想法在我的Javascript中實現了這個方法後,只要將鼠標放在'li'上,元素,這正是我在問題中所要求的。不幸的是,因爲彈出窗口不會沿着頁面相對於我的鼠標移動,所以我認爲我將不得不嘗試改變元素的「標題」,即使我認爲這樣做會是一個有趣的體驗。謝謝你的幫助,夥計們! – user1561666 2012-07-30 02:34:32

    +0

    如果您希望#pup隨鼠標移動,請更改您的mousemove處理程序以更新其位置。 – Barmar 2012-07-30 06:01:57

    +0

    真棒,非常感謝你們! – user1561666 2012-07-30 17:40:12

    相關問題