【问题标题】:JQuery--Stopping .html() value from changingJQuery--停止改变 .html() 值
【发布时间】:2012-07-11 17:30:59
【问题描述】:

我有一个div,如下:

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

所以当我这样做时,

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

然后

div_contents = "<p></p>"

但是我有另一个函数可以动态更改 div 的内容,比如说,&lt;div&gt;&lt;h2&gt;&lt;/h2&gt;&lt;/div&gt;

因此,我的div_contents 值从"&lt;p&gt;&lt;/p&gt;" 变为"&lt;h2&gt;&lt;/h2&gt;"

如何保持 div_contents 的值不发生变化,以便我可以将其用作最终或静态变量或其他东西?

【问题讨论】:

  • 请粘贴每个函数的代码。
  • 您的div_contents 变量将在分配行运行的时间点存储您的 div 的 html。当元素改变时它不会改变。
  • 我认为你应该仔细阅读the syntax
  • 嗯...这很奇怪@jbabey,因为它对我来说正在改变,我会再次阅读语法。

标签: javascript jquery variables html


【解决方案1】:

div_contents 只会在您进行分配时更改。如果div_contents 的值是&lt;h2&gt;&lt;/h2&gt;,那是因为那是你调用$("div").html() 时div 的状态。如果此后 div 发生变化,则该变量将保留其值,直到您进行另一次赋值。

我需要查看更多您的代码才能了解实际情况。

【讨论】:

    【解决方案2】:

    尝试DOMNodeInsertedMutation 事件,当一个新的节点被插入到文档中时,这个事件触发并且你可以更新变量的值:

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

    DEMO

    【讨论】:

      【解决方案3】:

      已解决的问题 - 一定是在某处犯了错误,但现在可以正常工作了。

      $(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);
      }
      

      【讨论】:

        猜你喜欢
        • 2012-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-25
        相关资源
        最近更新 更多