JQuery - 从更改中停止.html()值

时间:2012-07-11 17:31:00

标签: javascript jquery variables html

我有div如下:

<div><p></p></div>

因此当我这样做时,

var div_contents = $("div").html()

然后

div_contents = "<p></p>"

但是,我有另一个功能,即动态更改div的内容,比方说,<div><h2></h2></div>

因此,我的div_contents值已从"<p></p>"更改为"<h2></h2>"

如何保持div_contents的值不变,以便我可以将它用作final或static变量?

3 个答案:

答案 0 :(得分:1)

尝试DOMNodeInserted Mutation事件,当一个新节点插入到文档中时,此事件将触发,您可以更新变量的值:

$(document).bind("DOMNodeInserted", function(e){
    alert('New Element: ' + e.target)
    div_contents = $("div").html()
})

DEMO

答案 1 :(得分:1)

div_contents只会在您进行作业时更改。如果div_contents的值为<h2></h2>,则是因为这是您调用$("div").html()时div的状态。如果div在此之后发生变化,变量将保留其值,直到您再次进行赋值。

我需要查看更多代码才能看到实际情况。

答案 2 :(得分:0)

修复问题 - 必定在某个地方犯了一个错误,但这现在正在运作。

$(document).ready(function () {
    var has_ran = false;
    var div_contents;
    $(".scenario").bind("contextmenu", function (e) {
        e.preventDefault();
        var flipped_div = $(this);
        if (!has_ran) {
            div_contents = $(flipped_div).html();
            has_ran = true;
        } else {
            //do nothing
        }
        flip(flipped_div, div_contents);
        return false;
    });
});

function flip(flipped_div, div_contents) {
    if ($(flipped_div).hasClass("flipped")) {
        $(flipped_div).append(div_contents);
    } else {
        $(flipped_div).empty();
        $(flipped_div).append("<div class=\"scenario-desc\">hi</div>");
    }
    $(flipped_div).animate({
        rotateY: "+=" + (Math.PI) / 2
    }, 500, function () {
        $(flipped_div).toggleClass("flipped");
    }).animate({
        rotateY: "+=" + (Math.PI) / 2
    }, 500);
}