2013-03-12 98 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

相關問題