Javascript JQuery在<;时未被解雇;李>;是以编程方式构造的
请看一下我的JavaScriptJavascript JQuery在<;时未被解雇;李>;是以编程方式构造的,javascript,jquery,html,Javascript,Jquery,Html,请看一下我的JavaScript <script> function dynamicMessageLoader(id) { $.get("SentMessagesDynamicLoaderServlet?idMessageGroup=" + id, function (responseJson) { $('#li_list').empty();
<script>
function dynamicMessageLoader(id) {
$.get("SentMessagesDynamicLoaderServlet?idMessageGroup=" + id, function (responseJson) {
$('#li_list').empty();
var array = [];
$.each(responseJson, function (index, item)
{
array[index] = item;
});
$('#message_count').empty();
var readArray = array.length;
var count = readArray + " Messages Selected";
$('<p />', {html: count}).appendTo('#message_count');
for (var i = 0; i < readArray; i++) {
//$('<li />', {html: array[i][1]}).appendTo('#li_list');
$('<li>', { 'class': 'clickable-row hand', id: array[i][0], html: array[i][1]}).appendTo('#li_list');
}
});
}
</script>
现在的问题是,上面的Jquery代码只会被硬编码的
调用。我通过JavaScript添加的
元素从未调用它
如何修复此问题?对于新创建的元素,只需使用。因此,在这里,您将向父级(本例中为文档
)附加一个事件,该事件将为其所有子级(函数上的.on
中的第二个参数)触发,该子级将是本例中的可单击行
类
它不适用于$('.clickable row')。单击
,因为在事件分配时,最后一个节点仅附加到现有的dom节点(因此新创建的节点不会附加到此单击节点)
见以下代码:
$(document).on("click", '.clickable-row', function() {
var $this = $(this),
id = this.id;
//alert(id);
$.get("MessagesDynamicPopupServlet?idMessage=" + id, function(responseJson) {
var array = [];
$.each(responseJson, function(index, item)
{
array[index] = item;
});
var image = array[3];
$('#idMessage').val(array[0]);
$('#idMessageGroup').val(array[1]);
$('#message').val(array[2]);
$('#blah').attr("src", image);
$('#videoURL').val(array[4]);
});
});
如果你不介意的话,你能解释一下为什么这样做吗?好的,我现在就做哇,太好了。是的,请解释为什么这样做。@PeakGen在回答中添加:)当您调用
$('.clickable row')
时,它将搜索所有此类元素并附加事件(如“click”)。它将仅对现有对象执行此操作。当您使用$(document).on(“单击“,”.clickable row',function(){})
它将在文档
(始终存在)上附加事件,当您单击时。可单击行
此单击事件将冒泡到文档中,脚本将检查单击了哪个元素并执行附加事件。您必须在手动添加“li”后注册单击功能。
<script>
jQuery(function () {
$('.clickable-row').click(function () {
var $this = $(this),
id = this.id;
//alert(id);
$.get("MessagesDynamicPopupServlet?idMessage=" + id, function (responseJson) {
var array = [];
$.each(responseJson, function (index, item)
{
array[index] = item;
});
var image = array[3];
$('#idMessage').val(array[0]);
$('#idMessageGroup').val(array[1]);
$('#message').val(array[2]);
$('#blah').attr("src", image);
$('#videoURL').val(array[4]);
});
});
});
</script>
$(document).on("click", '.clickable-row', function() {
var $this = $(this),
id = this.id;
//alert(id);
$.get("MessagesDynamicPopupServlet?idMessage=" + id, function(responseJson) {
var array = [];
$.each(responseJson, function(index, item)
{
array[index] = item;
});
var image = array[3];
$('#idMessage').val(array[0]);
$('#idMessageGroup').val(array[1]);
$('#message').val(array[2]);
$('#blah').attr("src", image);
$('#videoURL').val(array[4]);
});
});