2017-07-09 8 views
2

私がやろうとしているすべては、このメカニズムのようなものである:ここではどのようにホバー上の要素を作ることができますか?

enter image description here

は、私がこれまで試したものです:

$(document).ready(function(){ 
 
    $('a').bind('mouseenter', function() { 
 
     var self = $(this); 
 
     this.iid = setInterval(function() { 
 
     \t var tag_name = self.text(), 
 
      top  = self.position().top + self.outerHeight(true), 
 
      left  = self.position().left; 
 
     self.append("<div class='tag_info'>Some explanations about"+tag_name+"</div>") 
 
     $(".tag_info").css({top: top + "px", left: left + "px"}).fadeIn(200); 
 
     }, 525); 
 
\t \t }).bind('mouseleave', function(){ 
 
    \t this.iid && clearInterval(this.iid); 
 
\t \t }); 
 
});
body{ 
 
    padding: 20px; 
 
} 
 

 
a { 
 
    color: #3e6d8e !important; 
 
    background-color: #E1ECF4; 
 
    padding: 2px 5px; 
 
} 
 
.tag_info{ 
 
    position: reletive; 
 
    width: 130px; 
 
    height: 30px; 
 
    display:none; 
 
    background-color: black; 
 
    color: white; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a>tag1</a> 
 
<a>tag2</a>

ご覧のとおりそれは毎回繰り返されます。ホバー毎に一度実行するにはどうすればよいですか?なぜポジションが適用されないのですか?

はまた、私はそのようなことのために右のアルゴリズムをやっているのですか?

ありがとうございます。

+0

LOL - つまり本当に悪い例この夜のスクリーンショットとして使用する私は、カテゴリの1つがあなたの質問の文章を永久に動かすと思った。 – Difster

+0

@Difster ahahaええええええええええええええええええええええええええええええええええん – stack

+0

なぜこれを使っていないのですか? $( 'a').hover(function(){ //ツールチップコード }); – Difster

答えて

1

私はなぜあなたがたsetIntervalを使用しているかわからないが、私は、これは動作するはずだと思います。私はsetIntervalを削除し、mouseenterイベントが発生するたびに<div class='tag_info'>を追加し、mouseleaveイベントが発生するたびに追加されたdivを削除できます。

$(document).ready(function(){ 
 
    $('#test').bind('mouseenter', function() { 
 
     var self = $(this); 
 
     \t var tag_name = self.text(), 
 
      top  = self.position().top + self.outerHeight(true), 
 
      left  = self.position().left; 
 
     self.append("<div class='tag_info'>Some explanations about"+tag_name+"</div>") 
 
     $(".tag_info").css({top: top + "px", left: left + "px"}).fadeIn(200); 
 
\t \t }).bind('mouseleave', function(){ 
 
    \t $(this).children('.tag_info').remove(); 
 
\t \t }); 
 
});
body{ 
 
    padding: 20px; 
 
} 
 

 
a { 
 
    color: #3e6d8e !important; 
 
    background-color: #E1ECF4; 
 
    padding: 2px 5px; 
 
} 
 
.tag_info{ 
 
    position: reletive; 
 
    width: 130px; 
 
    height: 30px; 
 
    display:none; 
 
    background-color: black; 
 
    color: white; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a id="test">tag1</a>

+0

あなたのコードを説明してください... – Li357

+0

@AndrewLi、はい編集中に終了しました – Dij

+0

あなたのコードは私が望んでいないものです。すぐにポップアップが表示されるためです。それは実際にはアヤックスの要求です。だから、私はホバリングごとにリクエストをすぐに送信したくないので、遅れが必要です。私は長い時間のためにそれをしたいと思うことを意味します。 – stack

関連する問題