如何将html内容恢复为原始值?

时间:2013-01-21 18:10:56

标签: jquery

用户按下div中的键后,html设置为“”。但是,在用户离开div之后,我想将html设置回原始值。我怎样才能做到这一点?

到目前为止,我有以下代码:

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

4 个答案:

答案 0 :(得分:6)

使用.data()

将其缓存在元素本身中
$(document).one('keypress',"#id",function() { 
    $(this).data('html',$(this).html()).html('');
}).focusout(function(){
    $(this).html($(this).data('html'));
});

我更喜欢这种方法,因为通过将数据存储在this上,它适用于任何选择器,包括那些匹配多个DOM元素的选择器。您只需要确保页面上的任何其他代码都没有使用data()变量('html'此处)。

答案 1 :(得分:3)

怎么样:

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

我将它包装在一个自动执行匿名函数中,以便将html变量保留在主范围之外。

或者以更简洁的方式:

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

这样我们就可以将原始html存储在元素中。

答案 2 :(得分:2)

也许是这样的:

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

答案 3 :(得分:0)

您需要将值存储在变量中,以便在焦点输出后恢复它。

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