2011-04-29 32 views
1

我在元素中使用標題atrib的不同框。我開發了一個簡單的jQuery來做,但是......「有史以來最好的朋友」,IE,不能正常工作。這很簡單,不要像其他瀏覽器那樣刪除標題atrib。結果:我的箱子顯示了標題atrib和自己的瀏覽器框。我該如何解決這個問題? (接下來的代碼)。 注意:適用於Chrome,Safari,Firefox,Opera。但IE不會。當使用jQuery去除標籤屬性時,IE會失敗嗎?

<title>Box</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<style type="text/css"> 
    #dbox { 
     background: #003767; 
     padding: 5px 8px; 
     position: absolute; 
     margin: 20px; 
     color: white; 
     font-size: 14px; 
     display: inline; 
     /* border radius specif browsers */ 
     -webkit-border-radius: 3px; /* safari, chrome */ 
     -khtml-border-radius: 3px; /* ktml browsers */ 
     -moz-border-radius: 3px; /* firefox, mozila found. */ 
     -o-border-radius: 3px; /* opera, opmob */ 
    } 
</style> 
<script type="text/javascript" src="js/jquery-1.5.2.min.js"></script> 
<script type="text/javascript"> 
    var dbox_time = 120; 
    var delay_time = 500; 

    $(document).ready(function(){ 
     $('<div id="dbox"></div>').insertAfter(('body')); 

     $("[title != '']").each(function() { 
      $(this).addClass('lkBox'); 
      $(this).css({border: '1px solid red'}); 
     }); 

     $('#dbox').empty(); 
     $('#dbox').css({ 
      display: 'none', 
      opacity: '0' 
     }) 

     $(document).mousemove(function(e){ 
      $('#dbox').css({ 
       'left': e.pageX, 
       'top' : e.pageY 
      }) 
     }) 

     $('.lkBox').mouseover(function(){ 
      $('#dbox').text($(this).attr('title')); 
      $('#dbox').css({display: 'block'}) 
         .stop().animate({opacity: '1'}, dbox_time) 
     }) 

     $('.lkBox').mouseout(function(){ 
      $(this).attr('title', $('#dbox').text()); 
      $('#dbox').css({display: 'none'}) 
         .stop().animate({ 
       opacity: '0' 
      }, dbox_time)     
     }) 
    }) 

</script> 

身體:

<div style="float: left; width: 70%; padding: 50px;"> 
    <h1>Examples: (mouse over the links)</h1> 
    <p>Curabitur lacus tortor, pellentesque eget <a href="#">interdum in</a>, auctor et lorem. In in quam lorem, vel <a href="#" title="i´m am a title =). must show">sagittis lec</a>. Donec felis leo, id fermentum nibh porttitor. Vestibulum ante <a href="#" title="">empy title (dont need to work)<span></span></a> primis. Lorem ipsum dolor sit amet, <a href="#" title="another title to show">lorem ipsum</a> elit.</p> 
    </div> 

信息:如果一個警報被放置後

$(this).attr('title', $('#dbox').text()); 

它在IE瀏覽器..但我不能使用警報。

回答

2

我在FF4中測試了你的代碼,我得到了與IE相同的雙標題工具提示行爲(你的工具提示彈出,然後內置的FF在繼續懸停後彈出約一秒鐘鏈接)。從你發佈的代碼,這是絕對預期的行爲。

你需要做的是或者利用不同的屬性(即:使用'dboxtitle'而不是'title'),或者你需要動態刪除並重新添加標題在mouseover/mouseout上,這樣瀏覽器看不到它(參考:Disabling browser tooltips on links and <abbr>s)。

+0

是的,我知道這一點,但我做標題的替換,並把值放入框中比我顯示框。我會在你寄給我的時候嘗試。 THS。 – 2011-04-29 18:16:52

+0

您將標題放在您自己的工具提示元素中,但您永遠不會將其從原始元素中移除:$(this).attr('title','');'在您的mouseover元素中。應該已經更清楚了,我的不好。 – 2011-04-29 18:22:46

+0

Ops ..我在編輯帖子時刪除了這一行,但是我使用了$(this).removeAttr('title');它不會工作。現在可以=)。謝謝 – 2011-04-29 18:47:04