2013-03-12 62 views
5

在我的.Net网络应用程序中,我有一些“skmTooltipHost”类的元素,它们是动态放置在页面上的。我的JQuery show()在IE中工作,但不是FF?

当鼠标悬停在它们上面时,应显示一个工具提示类型的弹出窗口。这在IE中完美运行,但在Firefox中完全没有。

请帮忙!

其中,那么 “悬停和Show”

$(document).ready(function() { 
    $(".skmTooltipHost").hover(function() { 
     $(this).empty().append('<div class="skmTooltipContainer"><strong>hello</strong>' + $(this).attr('tooltip') + '</div>'); 
     $(this).find('.skmTooltipContainer').css("left", $(this).position().left + 20); 
     $(this).find('.skmTooltipContainer').css("top", $(this).position().top + $(this).height()); 
     $(".skmTooltipContainer").css("display", "inline-block"); 
     $(".skmTooltipContainer").show(); 
     $(this).show(); 
    },function() {  
    $(".skmTooltipContainer").fadeTo(500, 1.0, function() { $(this).remove(); }); 
    }); 
}); 

我的CSS

.skmTooltipHost 
{ 
cursor: help; 
border-bottom: dotted 1px brown; 

} 

.skmTooltipContainer 
{ 
padding-left: 10px; 
padding-right: 10px; 
padding-top: 3px; 
padding-bottom: 3px; 
display:inline-block; 
position: absolute!important; 
background-color: #ff9; 
border: solid 1px #333; 
z-index: 999; 
} 

编辑

我终于用一组不同但相似的代码做的JavaScript工作。我不确定有什么不同。我的工作代码如下:

function simple_tooltip(target_items, name) { 
     $(target_items).each(function (i) { 
      $("body").append("<div class='" + name + "' id='" + name + i + "'><p>Click for a link to the run details</br><strong>Server: </strong>" + $(this).attr('title') + "</br><strong>Information:</strong>" + $(this).attr('error') + "</p></div>"); 
      var my_tooltip = $("#" + name + i); 

      $(this).removeAttr("title").mouseover(function() { 
       my_tooltip.css({ opacity: 0.8, display: "none" }).fadeIn(100); 
      }).mousemove(function (kmouse) { 
       my_tooltip.css({ left: kmouse.pageX + 15, top: kmouse.pageY + 15 }); 
      }).mouseout(function() { 
       my_tooltip.fadeOut(100); 
      }); 
     }); 
    } 
    $(document).ready(function() { 
     simple_tooltip($(".skmTooltipHost"), "tooltip"); 
    }); 



.tooltip{ 
position:absolute; 
z-index:999; 
left:-9999px; 
background-color:#dedede; 
padding:2px; 
border:1px solid #fff; 
width:250px; 

}

.tooltip p{ 
    margin:0; 
    padding:0; 
    color:black; 
    background-color:white; 
    padding:2px 7px; 
} 
+0

其实这两行现在什么都不做,我只是加了它们去试试。它们似乎没有影响功能。仍然适用于IE。不在FF中。 $(“。skmTooltipContainer”).css(“display”,“inline-block”); $(this).show(); – mplace 2013-03-12 10:00:56

+0

您是否尝试将定位添加到'.skmTooltipHost'(例如'position:relative;')? – MassivePenguin 2013-03-12 10:03:18

+0

尝试使用'.on'来触发'hover'。 – Red 2013-03-12 10:07:14

回答

1

this (jsfiddle)的CSS/HTML/JS你使用?这在Chrome和Firefox中适用于我。这条线可能不会做你想要什么,虽然:

$(".skmTooltipContainer").fadeTo(500, 1.0, function() { $(this).remove(); }); 
+0

Css/HTML是相同的,但HTML更复杂。 – mplace 2013-03-12 13:07:03

1

的问题,因为我看到它是在这些线路:

此行标志着跨度从DOM删除。 因此,它消失了,你不再悬停控制。

$(this).empty().append('<div class="skmTooltipContainer"><strong>hello</strong>' + $(this).attr('tooltip') + '</div>'); 

此行从DOM中删除控件。你会认为这是指工具提示,但实际上,它指的是顶级SPAN(或您的案例中的工具提示主机)。

$(".skmTooltipContainer").fadeTo(500, 1.0, function() { $(this).remove(); }); 

此代码证明工作:

$(document).ready(function() { 
    $(".skmTooltipHost").hover(function() { 
     $(this).append('<div class="skmTooltipContainer"><strong>hello</strong>' + $(this).attr('tooltip') + '</div>'); 
     $(this).find('.skmTooltipContainer').css("left", $(this).position().left + 20); 
     $(this).find('.skmTooltipContainer').css("top", $(this).position().top + $(this).height()); 
     $(".skmTooltipContainer").css("display", "inline-block"); 
     $(".skmTooltipContainer").show(); 
     $(this).show(); 
    },function() {  
    $(".skmTooltipContainer").fadeTo(500, 1.0, function() { $(".skmTooltipContainer").remove(); }); 
    }); 
}); 

你可以在这里进行测试:http://jsfiddle.net/ab4ML/2/

moeffju提供的小提琴。

+0

感谢您的好评。我结束了使用另一种解决方案,我将在下面发布....但这有助于我理解代码。 – mplace 2013-03-13 06:43:45

相关问题