代码之家  ›  专栏  ›  技术社区  ›  Elijah Manor

如何从动态创建的复选框w/jquery中获取html?

  •  0
  • Elijah Manor  · 技术社区  · 16 年前

    我正在尝试获取要在模板中使用的元素的html。

    我尝试使用jquery创建元素,然后获取html,但这似乎并不像我想象的那样。

    我可以从新元素中获取大部分html字符串,但是“checked”属性似乎没有被保存。

    我可以手动构建html,但我宁愿有一个库助手来确保我不会犯任何愚蠢的错误。

    这就是我要做的…

    http://jsfiddle.net/Kp8e5/28/

    4 回复  |  直到 16 年前
        1
  •  1
  •   Reigel Gallarde    16 年前

    好吧,你要做的是非常困难的。

    根据上的jquery文档 .html() :

    此方法使用浏览器的 innerHTML属性。一些浏览器可能 不返回完全正确的html 在 原始文件。例如, Internet Explorer有时会关闭 属性值周围的引号如果 它们只包含字母数字 角色。

    不管你是否能得到你想要的东西,这都是一个糟糕的决定,更糟糕的是依赖每个浏览器做同样的事情,试着找到一些方法来使用jquery的append函数或者在后端做你的模板。

        2
  •  0
  •   Reigel Gallarde    16 年前

    .get() .map() 一定会帮你的。;)

    var checkBoxAuto = $("<input />", { 
        id: "idAuto" 
        , type : "checkbox"
        , class: "answer"
        , checked : "checked"
    }); 
    var checkBoxAutoText = $("<div />")
        .append(checkBoxAuto)
    
    var    outerHtml = checkBoxAuto.map(function(){
            return $(this).parent().html();
        }).get();
    
    alert(outerHtml);
    

    艾斯 demo

        3
  •  0
  •   Community Mohan Dere    9 年前

    你可以用 outerHTML 属性:

    d = document.getElementById("d");
    d.outerHTML = "<p>This paragraph replaced the original div.</p>";
    

    https://developer.mozilla.org/en-US/docs/DOM/element.outerHTML#Browser_compatibility 相关问题: jQuery: outer html()

        4
  •  -1
  •   PetersenDidIt    16 年前

    与其尝试将html转换回字符串,不如将其保留为dom元素。

    这就是克隆人的伟大之处:

    var checkBoxAuto = $("<input />", { 
        id: "idAuto" 
        , type : "checkbox"
        , class: "answer"
        , checked : true
    }); 
    var checkBoxAutoDiv = $("<div />").append(checkBoxAuto);
    
    checkBoxAutoDiv.clone().appendTo('#div1');
    checkBoxAutoDiv.clone().appendTo('#div2');