4

「ホバー」の代わりに「オン」機能を使用する必要があります。それは古いコードです:

        $('.field').hover(
        function() 
        {
            old_value=$(this).text();
            item_id=$(this).attr('id');
            item=$(this).parent('td');
            new_value=(old_value=='Not translated') ? '' : old_value;

            $(this).empty(); 
            var field="<div id='save_button' class='btn btn-primary' style='float: right' href='#'>Save</div><form>"+
                "<div style='overflow: hidden; padding-right: .5em;'>"+
                "<input id='new_value' type='textarea' name='term' style='width: 100%;' value='"+new_value+"'/></div></form>";
            $(this).html(field);
        },
        function() 
        {

            $(this).empty();
            $(this).html(old_value);
        });

そして、それは新しいコードです:

        $('.field').on('hover',
        function(event) 
        {
            old_value=$(this).text();
            item_id=$(this).attr('id');
            item=$(this).parent('td');
            new_value=(old_value=='Not translated') ? '' : old_value;

            $(this).empty(); 
            var field="<div id='save_button' class='btn btn-primary' style='float: right' href='#'>Save</div><form>"+
                "<div style='overflow: hidden; padding-right: .5em;'>"+
                "<input id='new_value' type='textarea' name='term' style='width: 100%;' value='"+new_value+"'/></div></form>";
            $(this).html(field);
        },
        function(event) 
        {

            $(this).empty();
            $(this).html(old_value);
        });

古いコードはうまく機能しますが、新しいコードは機能しません (mouseout 関数のみが機能します)。教えてください、どこで間違いを犯したのですか?ありがとうございました。

4

2 に答える 2

5

最も簡単な方法は、おそらくmouseenterand をmouseleave個別にバインドすることです (これはhoverとにかく行うことです)。メソッドの jQueryソースは.hover()次のとおりです。

function (fnOver, fnOut) {
    return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
}

イベント名のマップをイベント ハンドラに渡すことができます.on()

$('.field').on({
    mouseenter: function (event) {
        // First function passed to hover
    },
    mouseleave: function (event) {
        // Second function passed to hover
    }
});

しかし、 には何の問題もないので、そのままにし.hover()ておいてもかまいません。

于 2012-07-12T07:24:17.470 に答える
0

jQuery API Documentationによると、「hover」疑似イベント名 (「mouseenter mouseleave」に使用) は v1.8 以降非推奨であり、代わりに 2 つのイベント ハンドラーを使用する必要があります。

$('.field').on({mouseenter: function (e) { /* code */ },
                mouseleave: function (e) { /* code */ }
});
于 2012-07-12T07:27:25.127 に答える