10

私が持っているホバーイベントがajaxロード後に機能しないという問題があり、最初のページロードでのみ機能します...これは私が現在使用しているコードです:

    $(".table tbody tr").hover(
        function () {
            $(this).children('td').children('.operation').children('.btn-group').fadeIn();
        },
        function () {
            $(this).children('td').children('.operation').children('.btn-group').fadeOut();
        }
    );

$(document).on() をセレクターとして使用する必要があることはわかっていますが、元のコードのように機能を実行するための正しい構文がわかりません。どんな助けでも大歓迎

4

1 に答える 1

22

解決

コメントからのポスター独自のソリューション。True document(または ajax 呼び出しの影響を受けない祖先) を使用する必要があります。

$(document).on({
    mouseenter: function () {
        $(this).find('.btn-group').fadeIn();
    },
    mouseleave: function () {
        $(this).find('.btn-group').fadeOut();
    }
}, '.table tbody tr');

オリジナル

$(".table tbody").on("hover","tr",
    function () {
        $(this).children('td').children('.operation').children('.btn-group').fadeIn();
    },
    function () {
        $(this).children('td').children('.operation').children('.btn-group').fadeOut();
    }
);

編集

確かに、hover古い学校であり、このインスタンスでは機能しないと思います! これを試して:

$(".table tbody").on({
    mouseenter: function () {
        $(this).children('td').children('.operation').children('.btn-group').fadeIn();
    },
    mouseleave: function () {
        $(this).children('td').children('.operation').children('.btn-group').fadeOut();
    }
},'tr');

そして、あなたが何をしているのか正確にはわかりませんが、これはさらに短いかもしれません:

$(".table tbody").on({
    mouseenter: function () {
        $(this).find('.btn-group').fadeIn();
    },
    mouseleave: function () {
        $(this).find('.btn-group').fadeOut();
    }
},'tr');
于 2013-03-01T16:14:19.333 に答える