0

私はこのコードを持っています

$.getJSON('check.php', function(data) {
    $.each(data, function(key, val) {  
        $("#badge").append("<tr><td>"+val+"</td></tr><tr><td>-------------------------------------------------------</td></tr>");
    });
});

$("td").mouseover(function () {
    $(this).css("color","red");
});

私の問題は、各要素にマウスカーソルを合わせると、期待どおりに色が変わらないことです...誰かが私に理由を説明できますか??? 正しいことをする方法を教えてください。

4

2 に答える 2

6

mouseover要素がロード時にページに存在しないため、イベントは発生しません...したがって、これを行う必要があります:

$("#badge").on('mouseover','td', function () {
    $(this).css("color","red");
});

on()関数はbadge要素(推測のテーブル)でトリガーされ、イベントターゲットがaでイベントが。の場合にのみトリガーされtdますmouseover

ただし、注意すべき点が1つあります。これは、cssを使用して簡単に実行できます。

#badge td:hover {
   color: red;
}

ありがとう@WTK:

これはjQuery1.7以降で利用可能であることに注意してくださいon()。古いバージョンのjQueryおよび同様の結果の場合は、、またはのいずれかを使用bind()delegate()ますlive()

于 2012-08-07T09:54:53.490 に答える
1

要素が動的に読み込まれるため、liveorを使用してみてください。on基本的に、これらの関数が行うことは、イベント ハンドラーを将来の要素にアタッチできるようにすることです。次のように使用します。

$("td").on('mouseover', function(){
    $(this).css({'color':'#F00'})
});
于 2012-08-07T09:59:24.300 に答える