0

jQuery を使用してデータをフェッチし、リンクにカーソルを合わせた後、それを div に配置しようとしています。動作していますが、2 回目のホバー時のみです。最初の hover インスタンスは何もしません。なんで?

jQuery(document).ready(function($){

$(".tiptrigger").hover(function() { 

    var s_href = $(this).attr('href');
    var s_title = $(this).attr('title');

    $(".tiptitle").empty().append(s_title); // Only working after second instance

    var get_url = "/root/data.php"+s_href;

    $.get( get_url, function( data ) {
      var tip_content = data; 
    $("#tipcontent").empty().append(tip_content); // Only working after second instance

});
});

そしてHTML:

<a class="tiptrigger" title="My Title" href="?s=something">Hover over me</a>

<div class="tipbox"><p class="tiptitle"></p><p id="tipcontent"></p></div>

そして最後に、GET リクエストが送信される PHP ページ:

<?php

if ($_GET['s'] == "something") {
  echo "This should appear in the paragraph.";
}

?>

ここで何が間違っていますか?

4

1 に答える 1

0

.hover() の 2 番目のハンドラーに空のスタブ関数を提供しhandlerOut()ます。リンクを越えたときと外に出たときに実行される 1 つのハンドラーを提供するだけなので、次のようにします。

$(".tiptrigger").hover(function() { 

    var s_href = $(this).attr('href');
    var s_title = $(this).attr('title');

    $(".tiptitle").empty().append(s_title); // Only working after second instance

    var get_url = "/root/data.php"+s_href;

    $.get( get_url, function( data ) {
      var tip_content = data; 
    $("#tipcontent").empty().append(tip_content); // Only working after second instance

}
, function() {}); //PROVIDE EMPTY HANDLER FOR MOUSEOUT
于 2013-11-03T14:45:04.703 に答える