我有这段代码
$(".insert").click(function(){
$(".insert").ajaxStop(function(){
$(".load").hide();
});
$(".insert").ajaxStart(function(){
$(".load").show();
});
$.ajax({
type: "GET",
url: "edit.php",
data: "action=add",
success: function(msg){
$(".control").append(msg);
}
});
});
如您所见,此代码将edit.php的HTML响应附加到.control
问题是
在附加html之后..所有jquery更改都不会适用于它..因为在此HTML代码诞生之前已经调用了$(document).ready()...
每当我做任何改动时,我都能调用$(document).ready()吗?答案 0 :(得分:9)
如果您可以详细说明您在document.ready函数中正在做什么,我可以提供更具体的帮助。您可以在live()
函数中找到所需内容,该函数模拟将事件应用于对象,即使它们在调用live()
后添加到DOM中也是如此。
要回答你的问题,是的,你可以通过这样做来调用事件处理程序:
$(document).ready();
答案 1 :(得分:6)
看看jQuery live。它旨在自动绑定事件以用于新元素。它适用于click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,keydown,keypress和keyup。
答案 2 :(得分:2)
我一次又一次地解决了这个需求 例如:
$("div.value").off("click");
$("img.cancelEdit").off("click");
$("div.value").on("click", function (e) {
var $this = $(this);
$this.hide();
$this.next().show();
});
$("img.cancelEdit").on("click", function (e) {
var $this = $(this);
$this.parent().hide();
$this.parent().prev().show();
});
你可以使用Selector.Live();
答案 3 :(得分:1)
是的,使用参数调用ready函数(无论是对函数还是匿名函数的引用),都会将它附加到jQuery调用事件的函数链上。
答案 4 :(得分:1)
根据您正在进行的DOM操作的结构,您可以使用事件委派将事件处理程序应用于新创建的DOM元素。
http://www.danwebb.net/2008/2/8/event-delegation-made-easy-in-jquery
答案 5 :(得分:0)
如果您需要在文档准备就绪时运行,请将其打包在$(document).ready(function(){});
中,它将在适当的时间运行。
您可以在多个地方为document
的.ready()方法添加规则。
答案 6 :(得分:0)
使用on()代替live()。 live()有一些缺点,它是折旧的。