2012-07-30 70 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

    相关问题