将html元素插入到以前动态插入的元素中?

问题描述:

这里是我的第一个问题,我一直在寻找很多研究的小线索,但没有找到任何答案,希望它不是一件愚蠢的事情。我正在处理一个处理XML文件的网站(数据存储在一个数组中,然后显示并完全可编辑)。将html元素插入到以前动态插入的元素中?

直到现在,尽管我发现一些麻烦,一切正常。

我在我的数组上循环获取所有必需的字符串,然后创建jQuery对象(例如我附加到特定的div的$("<input id='xxx' value='yyy' />"))。

第一次启动时,我有一个空的#insertXml div(写在我的html中)。 一个我的xml文件解析和我的数组准备好了,我动态创建一个#content div附加到我的#insertXml,然后为每个索引我将它的密钥写入#keyInput“div(动态插入,只有一次),然后在#语言1格(静止型动态插入),在#LANG2 DIV 2,等

语言1,LANG2等1个值是变量,所以它是写:

$("<input .../>").appendTo("#"+langN); 

,其中每个循环langN变化。

一切正常!!第一次显示:/

麻烦的是,当我使用我的函数创建新的数据。 我首先在模态窗口上工作,通过侦听器函数检索用户值,然后将其传递给另一个将其推入阵列的函数。 我调试它,工作,我的数组正确更新。

然后我想简单地刷新我的页面,所以我尝试,就像我以前为我的整个数据所做的那样,添加一些输入。

它工作正确,然后我的#keyInput div,但不是我的#lang divs!?!?! 不管我怎么尝试(甚至忘记jQuery和使用html document.xxx函数),都没办法。

在调试过程中,我所有的变量都可以,在执行“appendTo”的时候它什么都不做,除了keyInput div。

我试着删除#content div,并重新启动整个displayInit()方法(繁重的操作,但只是看到)和同样的该死的问题:只有#keyInput被正确刷新。

我读到的唯一可能很有趣的事情是,动态创建的元素(通过脚本)没有在DOM中注册,因此无法找到它。 但在这种情况下,我的显示器尝试都不应该工作,所以?

提前,非常感谢您关注我的噩梦。

附:我的html + JS函数。 my DOM

function displayInsert() { 
 

 
    var firstLang = stripXmlExtension(paths[0]); // same keys on every language, so we grab the 1st one 
 
    var lastKeyIndex = mapXml[firstLang].key.length - 1; 
 
    var keyToInsert = mapXml[firstLang].key[lastKeyIndex]; // == last insertion 
 

 
    var inputKey = "<input size=35 type=text id=k" + lastKeyIndex + " value=" + stripHTML(keyToInsert.replace(/ /g, " ")) + " readonly />"; 
 
    // while appending tag to the HTML content page, we add a dblclick listener that will morph the input into a textarea when double dblclicked 
 
    $(inputKey).css("margin-bottom", "15px").dblclick(function (e) { 
 
     e.preventDefault(); 
 
     tempEditId = $(this).attr('id'); 
 
     $(".modal-body").html("<textarea cols='65' rows='10' id='txt" + $(this).attr('id') + "'>" + $(this).val() + "</textarea>"); 
 
     $("#modalEdit #btn-correct").css("display", "none"); 
 
     $("#modalEdit").modal({backdrop: "static"}); 
 
    }).appendTo("#keyInput"); 
 

 

 
    for (var i = 0; i < paths.length; i++) { 
 
     var lang = stripXmlExtension(paths[i]); 
 
     var lastValueIndex = mapXml[lang].value.length - 1; 
 
     var valueToInsert = mapXml[lang].value[lastValueIndex]; // == last insertion 
 

 

 
     var inputValue = "<input size=35 type=text id=" + lang + "---" + lastValueIndex + " value=" + stripHTML(valueToInsert.replace(/ /g, " ")) + " readonly />"; 
 
     // while appending tag to the HTML content page, we add a dblclick listener that will morph the input into a textarea when double clicked 
 
     $(inputValue).css("margin-bottom", "15px").dblclick(function (e) { 
 
      e.preventDefault(); 
 
      tempEditId = $(this).attr('id'); 
 
      $(".modal-body").html("<textarea cols='65' rows='10' id='txt" + $(this).attr('id') + "'>" + $(this).val() + "</textarea>"); 
 
      $("#modalEdit #btn-correct").css("display", "none"); 
 
      $("#modalEdit").modal({backdrop: "static"}); 
 
     }).appendTo("#" + lang); 
 

 
    } 
 

 
}

+0

寻求调试帮助的问题(“为什么代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的_shortest code_。没有明确问题陈述的问题对其他读者无益。请参阅:[如何创建最小,完整和可验证示例。](http://stackoverflow.com/help/mcve) – nbrooks

OMG,我很惭愧。从在了已复制相同ID的模态窗口生成的输入

我的问题就来了...... 我希望这将是一个有点复杂^^

解决了!