0

ユーザーがdivのキーを押すと、htmlは""に設定されます。ただし、ユーザーがdivを離れた後、htmlを元の値に戻したいと思います。どうやってやるの?

私はこれまでに次のコードを持っています:

$(document).one('keypress',"#id",function() { 
        $(this).html("");
    }).focusout(function(){
        //do something 
    });
4

4 に答える 4

6

を使用して要素自体にキャッシュします.data()

$(document).one('keypress',"#id",function() { 
    $(this).data('html',$(this).html()).html('');
}).focusout(function(){
    $(this).html($(this).data('html'));
});

thisデータをに保存することで、複数のDOM要素に一致するセレクターを含むすべてのセレクターで機能するため、このアプローチを好みます。data()変数('html'ここ)がページ上の他のコードによって使用されていないことを確認する必要があります。

于 2013-01-21T18:13:22.247 に答える
3

どうですか:

(function()
{
    var html = null;
    $(document).one('keypress',"#id",function() { 
        html = $(this).html();
        $(this).html("");
    }).focusout(function(){
        //do something 
        $(this).html(html);
    });
})();

html変数をメインスコープに入れないように、自己実行型の無名関数でラップしました。

または、よりjQueryの方法で:

$(document).one('keypress',"#id",function() { 
    $(this).data('orightml', $(this).html());
    $(this).html("");
}).focusout(function(){
    //do something 
    $(this).html($(this).data('orightml'));
});

このようにして、元のhtmlを要素に対して保存します。

于 2013-01-21T18:14:48.373 に答える
2

多分このようなもの:

var orig;
$(document).one('keypress',"#id",function() { 
        orig = $(this).html();
        $(this).html("");
    }).focusout(function(){
        //do something 
        $(this).html(orig);
    });
于 2013-01-21T18:13:06.043 に答える
0

フォーカスアウト後に値を回復できるように、値をaa変数に格納する必要があります。

var divValue;
$(document).one('keypress',"#id",function() { 
    divValue = $(this).html();
    $(this).html("");
}).focusout(function(){
    $(this).html(divValue);
});
于 2013-01-21T18:14:01.790 に答える