使用jquery我正在向div元素添加新元素我也设置了新添加元素的id但仍然无法找到新添加的元素。
$.ajax({ //ajax call
type: "POST",
url: "ajax/ajax.php",
data: { users: values }
}).done(function( msg ) {
//do something with msg which is response
//this line will put the response to item with id `#txtHint`.
$("#divselect").html(msg)
//alert(msg);
});
});
新元素已成功添加,但点击按钮时,javascript无法找到新的元素ID。有没有办法只重新加载JavaScript或我应该怎么做?
$("#validator").click(function (){//validator is my submit button id
var value = document.getElementById('select_division'); //select_division is id of my new added element
alert(value);
}
然后是参考错误。对此。
答案 0 :(得分:2)
jQuery在运行时只知道页面中的元素,因此添加到DOM的新元素无法被jQuery识别。要解决这个问题,请使用event delegation,将新添加的项目中的事件冒泡到DOM中的一个点,当jQuery在页面加载时运行时。许多人使用document
作为捕获起泡事件的地方,但没有必要一直向上移动DOM树。理想情况下you should delegate to the nearest parent existing at the time of page load.
此外,ID's Must Be Unique,特别是因为当您尝试与这些元素进行交互时,它会在JavaScript和CSS中导致问题。
更改你的选择器(从jQuery转换为vanilla JS,因为你已经在使用jQuery,因此你没有必要使用jQuery)并使用on()
来执行事件委派:
$(document).on('click', '.validator', (function (){//validator is my submit button id
var value = document.getElementsByClassName('select_division'); //select_division is id of my new added element
alert(value);
})
此处的部分问题是您需要与select_division
相关的特定validator
。为了得到它你可以执行一些DOM遍历。没有看到你的标记,我无法告诉你如何进行遍历。
答案 1 :(得分:-1)
问题解决了我写错了。
无法完成$("#elementid").click(function (){//v
它只适用于
var value = document.getElementById('elementid').value;
感谢您的帮助