2012-03-22 8 views
1

私はそのハードは聞こえましたが可能です。私は単純に、jqueryコードを使って、遅くて本当に小さなデフォルトのチップアップ(タイトルとalt属性は& imgタグ)を避けるために使用したいと思っています。デフォルトのツールチップの表示をブラウザ間でやり取りする方法を教えてください。

$(function() { 
$('a').hover(function(e) { 
     e.preventDefault(); 
    if(this.title > '') 
     { 
    this.t = this.title; 
    // this.title = ''; 
    $(this).append("<span id='tooltip'>"+ this.t +"</span>"); 
    $("#tooltip") 
     .css("top",(e.pageY - 20) + "px") 
     .css("left",(e.pageX + 3) + "px") 
     .fadeIn("fast"); 

     } 
    }, 
    function() { 
    $(this).find("span:last").remove(); 
    } 
); 
}); 

ここで、//this.title = ''をリリースしました。コードでは動作しますが、ツールチップは一度だけ実行され、次のホバーではリプレイはありません。

これを無効にする方法はありますか?どうも。

+0

は、あなただけのタイトルを設定することはできませんあなたはその価値を読んだ後に空にする?例えば(テストされていない)これはうまくいくでしょうか? 'this.t = this.data( 'title')= this.attr(" title ")|| this.attr( "title"); this.attr( "title"、 ""); '..うーん、それを修正するか、title属性を他のものにコピーしてから削除する必要があります。 – frumbert

+0

ええ、もう一度考えると..これはちょうど(this.title = '';で)うまくいくと思います!ツールチップを1回だけ表示すると、ユーザーは最終的にそのチップが実際に何を言っているか尋ねます:D ps:それが削除されない - 私がテストしたように - ツールチップはコピーとして表示されます。しかし、病気はそれをチェックしてください! – Xfile

+0

@ジョセフ私は私の答えを再考しました...はるかに良いIMO。 – Kyle

答えて

1

EDITexample jsFiddle

私はqTipを好むが、あなたがあなた自身のコードをロールバックしたい場合は、私はこれを行うだろう...

$(function(){ 
    // remove all titles and create tooltip span 
    $('a[title]').each(function(){ 
    var s = $("<span class='tooltip'>"+ this.title +"</span>").hide(); 
    $(this).append(s).removeAttr("title"); 
    }); 

    // setup hover functions 
    // tooltip spans are already present 
    // we just need to position and show them or hide them 
    $('a').hover(function(e){ 
    $(this).find("span.tooltip").css({ 
     top: (e.pageY - 20) + "px", 
     left: (e.pageX + 3) + "px" 
    }).fadeIn("fast"); 
    }, 
    function(){ 
    $(this).find("span.tooltip").fadeOut("fast"); 
    }); 
}); 
+0

これはいくつかのブラウザで今すぐ起動され、コードは魅力のように機能します! THAAAAAAANX:D PS:div id(「a」タグも付いている)を追加したい場合にはちょっと思ったので、この機能をいくつかのdivにも使用できますか? – Xfile

+0

セレクタを変更して他の要素で使用するだけです。 I. hover(func ... 'と' $( 'a [title]、div [title]')。それぞれ... '$( 'a、div#your_id' – Kyle

0

私の最後の答えを無視して、私はただムースヘッドを終えました。

$('a').hover(function(e) { 
     e.preventDefault(); 
     var title = $(this).attr('title'); 

     // assign the original title to the "tt" attribute 
     $(this).attr('tt', title); 

     $(this).removeAttr('title'); 
     $(this).append("<span id='tooltip'>" + title + "</span>"); 

     $("#tooltip").css("top", (e.pageY - 20) + "px").css("left", (e.pageX + 3) + "px").fadeIn("fast"); 
    }, function() {  

     // assign it back to what it was 
     $(this).attr('title', $(this).attr('tt')); 

     $(this).find("span:last").remove(); 
    } 
}; 
関連する問題