在Ajax请求后重新启动Dom(.on输入不起作用)

时间:2018-02-01 19:15:42

标签: javascript php jquery html ajax

我有一堆通过MySQL查询动态创建的文本输入。

在我的页面底部我有这个..我不得不使用window.load而不是document.ready,因为后者不起作用

<script>
    $(window).load(function() {
    $('.<?php echo $sku; ?>').on('input', function() {
    $('.'+$(this).attr('class')).val($(this).val());
});
});

我的理解是,使用.on应该与过去和现在的dom对象相关,但事实并非如此。

我目前正在处理的(杂乱)html是

<input type="text" class="mySKU18" id="inputsku" contenteditable="true" onkeydown="if (event.keyCode==13) saveToDatabase2(this,'itemnumber','mySKU18')" onClick="showEdit(this);"></input>

这是在页面加载时生成的,并且&#39;重置&#39;如果单击一个按钮,则使用ajax。

我的问题是与上面的html有关的上述脚本。 两个HTML在初始页面加载和ajax响应上都是相同的。

现在我的解决方案是重新启动我的ajax php脚本底部的脚本。

/// my php
?>
<script>
    $('.<?php echo $sku; ?>').on('input', function() {
    $('.'+$(this).attr('class')).val($(this).val());
});
</script>

这有效,并且不提供任何控制台错误,但显然不是理想的。 任何人都知道可能是什么问题以及如何解决它?

1 个答案:

答案 0 :(得分:0)

像这样构建新的文本输入元素,它们将在DOM树中。您可以通过这种方式构建所有新元素,并使用appendChild将它们链接在一起,如果您需要在DOM树中引用它们。

var text = document.createElement("input");
text.setAttribute('type', 'text')
text.setAttribute('id', 'yourID');
text.setAttribute('name', 'yourName');
text.setAttribute('class', 'yourClass');
text.setAttribute('style', 'yourStyle');
document.getElementById("yourParent").appendChild(text);