2011-03-14 26 views
1

jQueryが要素をマウスで移動してマウスで外に出た後に何かをしたいです。jQueryのホバーは機能しません

私はこれを書いた:このコードは機能2まで正常に動作しますので、それは何も警告したことがない理由

jQuery('.item').hover(

     function() { 
      var bg = jQuery(this).attr('data-background'); 
      jQuery(this).css("background-color", bg); 
     }, 

     function() { /* this doesn't seem to work */ 
      alert(bg); 
     }); 

あなたは私を伝えることができますか?タイプミスがあると思われますが見つかりません。/

答えて

11

まあ、bgは2番目の機能では定義されていません。それは、最初のものにのみローカルです。これは動作します:

jQuery('.item').hover(
    function() { 
     var bg = jQuery(this).attr('data-background'); 
     jQuery(this).css("background-color", bg); 
    }, 
    function() { 
     var bg = jQuery(this).attr('data-background'); 
     alert(bg); 
}); 

DEMO

がupvotesに正義を行うには、あなたがも両方の機能によって範囲内bgアクセスを定義することができます。

(function() { 
    var bg; 
    jQuery('.item').hover(
     function() { 
      bg = jQuery(this).attr('data-background'); 
      jQuery(this).css("background-color", bg); 
     }, 
     function() { 
      alert(bg); 
    }); 
}()); 

ここ即時機能は新しいスコープを作成します(bgはグローバルスコープを汚染しません)。しかし、これが必要かどうかは、あなたが実際にやりたいことにかかっています。 jQueryの1.4.3のよう

DEMO


、あなたは.data()でもdata-backgroundにアクセスすることができます。

var bg = jQuery(this).data('background'); 
+0

は+1に私を打ちます。 – Loktar

+0

@Felix Klingああ、私の神、 "easy points provider"バッジはありますか?優れた! :D – anonymous

+0

うわー... 6分で1分で投票できますか?あまりにも私はすでに限界に達した悪い;) –

関連する問題