如何在页面加载后动态生成的DOM对象上激发事件
How to fire an event on DOM objects dynamically generated after page load
当页面的一部分加载了动态创建的按钮时,我很难激活相关的JavaScript/jQuery事件。如何解决此问题?解决这个问题的最佳方法是什么?
这是基于我在现实生活中遇到的麻烦。
我有这个函数来调用php函数,用Ajax在页面中生成一个新的动态创建分页部分。
function loadData(page){
$.ajax({
type: "POST",
url: ".../get_Scorewithagination.php",
data: 'page='+page+'&testID='+testID+'&testDate='+testDate+'&empPass='+empPass+'&courseCode='+courseCode,
success: function(msg){
$('#testInfo').empty();
$(document).ajaxComplete(function(event, request, settings){
loading_hide();
$("#resultBox").html(msg); to #resultBox
});
$('.iconpoint_orange').click(function() {
btnNames = $(this).attr("name").split("_");
$.post('.../getInfo.php', {testresult: btnNames[1]}, ShowTestInfo);
});
// Collapse row on delete
$('.iconpoint_blue').click(function() {
alert();
rowName = this.name;
rowID = '#' + rowName;
$(this).closest('tr').children('td').addClass("row_hover");
$("#dialog_confirm").html("Are you sure you want to delete this?");
$("#dialog_confirm").dialog({
buttons : {
"Delete" : function() {
$(rowID).closest('tr').animate({opacity: 0},500).slideUp(300);
setTimeout(function() {$(rowID).closest('tr').empty().remove();} ,3000);
$(this).dialog("close");
},
"Cancel" : function() {
$(rowID).closest('tr').children('td').removeClass("row_hover");
$(this).dialog("close");
}
}
});
$("#dialog_confirm").dialog("open"); // Show dialog box
});
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Error: " + errorThrown);
$('#testInfo').html("<br'>Status: " + textStatus +"<br'>Error: " + errorThrown);
$('#testInfo').addClass("errorRed");
}
});//$.ajax() END
}//loadData(page) END
但问题是这两个按钮
.iconpoint_blue
和
.iconpoint_orange
在我用Ajax调用的php文件动态生成行之后,无法调用响应。
我知道Ajax返回的html代码在文档完成之初不会被JavaScript扫描,因为它是稍后完成的,因此,我动态创建的按钮不会响应函数,即使它是正确的选择器#
。
我想要动态生成的按钮和现有函数的选择器用于每条记录,是否能够回调页面加载时加载的函数?
将函数绑定到父元素。例如,使用这个HTML:
<div class='wrapper'>
<a href='#' class='click_here'>click here</a>
</div>
您可以使用以下javascript:
$('.wrapper').on( 'click', '.click_here', function() {
$(this).after('<a href="#" class="or_here">or here</a>');
});
$('.wrapper').on( 'click', '.or_here', function() {
$(this).remove();
});
这是一个jsFiddle。
相关文章:
- 将GET请求(HTML字符串)转换为完整的DOM对象
- 在Angular中呈现DOM对象时,如何调用控制器中指定的函数
- 正在寻找从JSON/对象构建DOM客户端的JS库
- React-从简单对象树创建dom
- minko从dom获取对象
- 不带dom对象的jquery ajaxComplete()
- 从 DOM 数组中删除 DOM 对象
- 将 JavaScript 对象添加到 DOM 中
- 关于在对象属性中保存 DOM 元素
- Raphael JS:如何从 Dom 对象(Element.node)获取 Raphael 元素
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- 创建具有关联 dom 元素的 javascript 对象的首选方法是什么
- DOM 元素是否可以具有其值为任意对象(而不是字符串)的属性
- SVG DOM对象间距/重叠
- 窗口对象属性返回一个dom节点
- DOM对象而不是其他DOM对象
- 如何区分DOM对象和JavaScript对象
- 在提取dom对象后,无法将每个名为tab的元素推送到数组中
- JavaScript中面向对象DOM操作的混乱混乱
- 在加载对象DOM之前修改对象DOM