我有这个用于ajax的代码,
$('body').ajaxStart(function() {
$(this).after('<div id="lightBox" style="height: ' + $(window).height() + 'px;"></div>');
$('#lightBox').hide().show('scale');
});
在ajax请求中,我试图通过成功回调来做这样的事情,
success: function() {
$('#lightBox').after('<div style="background: ' + mainBg + '; color: ' + pageText + '; border: 1px solid ' + borders + '; "><h3 style="background: ' + headerBg + '; color: ' + headerText + '; border-bottom: 1px solid ' + borders + ';">Color Scheme Saved<img id="lightBoxClose" class="toolTips" src="" height="17" width="17" alt="" title="Close" /></h3><p>Your custom color scheme has been saved.</p></div>');
$('#lightBox div').hide().show('scale');
}
但由于#lightBox
是实时jquery,jquery不会触发成功回调,我理解.live
如何在jquery中工作但不在ajax调用中...
由于
修改
在ajaxStart
上,div覆盖整个屏幕。在其他ajax请求中,我希望能够在ajaxStart
已添加到DOM的div中添加html内容。 Jquery不会添加它,因为我不知道如何使ajax调用的成功回调函数添加到实时DOM元素的东西。
答案 0 :(得分:0)
我无法在代码中的任何地方看到.live(),我认为.live现在已经折旧了,您应该使用.on() - 请参阅http://api.jquery.com/on/。 我不太明白你的问题 - .on / live使得在给定范围内的动作可用,无论内容如ajax调用如何变化。如果.on调用的范围是body,那么只要不替换实际的body标记,您的函数就会引用该id / class中创建/更改的任何元素。如果由于某种原因需要更换全身,您甚至可以在整个文档中申请。
如果要将内容添加到通过ajax创建的html元素作为成功回调函数的一部分,则不需要使用live或on,因为元素在回调时存在且正确。
如果你在ajax调用之前的javascript中有这样的东西:
$('body').on("click", "#ajax_created_div", div_click);
每次点击新创建的id =“ajax_created_div”div时,都会调用div_click函数。
希望这能为你解决问题...否则我认为你的问题需要更多细节...或者我是一个布偶