这是我在这里的第一个问题,我一直在寻找许多研究的小线索,但没有找到任何答案,希望它不是一个愚蠢的事情。
我会尝试直截了当:我正在处理一个处理xml文件的网站(数据存储在一个数组中,然后显示并完全可编辑)。
直到现在,尽管我发现了一些麻烦,但一切正常。
我在我的数组上循环以获取所有必需的字符串然后创建jQuery对象(例如我追加到特定div的$("<input id='xxx' value='yyy' />")
)。
刚开始时,我有一个空的#insertXml div(用我的html编写)。 解析了我的一个xml文件并准备好了我的数组,我动态创建了一个附加到我的#insertXml的#content div,然后对于每个索引我将其密钥写在#keyInput&#34; div(动态插入,只有一次),然后是#lang1 div中的第一个值(仍然是动态插入),#lang2 div中的第二个等等。
lang1,lang2等是变量,所以写了:
$("<input .../>").appendTo("#"+langN);
其中langN在每个循环上都会发生变化。
一切正常!......在第一场展示:/
问题是,当我使用我的功能创建新数据时。 我首先在模态窗口上工作,通过侦听器函数检索用户值,然后将其传递给另一个将其推送到我的数组中的函数。 我调试了它,这是有效的,我的数组已正确更新。
然后我想简单地刷新我的页面,所以我尝试,就像我之前为我的整个数据所做的那样,添加一些输入。
然后在我的#keyInput div上正确工作,但不在我的#lang divs上工作!?!?! 无论我如何尝试(甚至忘记jQuery和使用html document.xxx函数),都没办法。
在调试时,我的所有变量都没问题,在执行&#34; appendTo&#34;时它什么也没做,除了一次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);
}
}
&#13;
答案 0 :(得分:0)
我的问题来自于在模态窗口中生成的输入,该窗口采用了相同的重复ID ... 我希望它会有点复杂^^
解决!