在 ajax 加载后加载容器事件
Load container events after ajax load
#
更新:请参阅问题末尾的答案
#
我遇到以下问题:
我创建了一个函数来加载在特定事件上加载的所有事件/插件。当页面最初加载时,它会加载到"body"上,当进行 ajax 调用时,然后调用内容加载到的容器。
(function($){
$.fn.defaultFormValues = function(){
return this.each(function(){
var element = $(this);
var defaultValue = element.attr("default");
var currentValue = element.val();
// This will make sure not to replace exisitng values
if( !currentValue ) {
element.val( defaultValue ).addClass('input-before-focus');
}
else if( currentValue == defaultValue ) {
element.addClass('input-before-focus');
}
element.unbind('focus').bind('focus', function() {
if( element.val() == defaultValue ) {
element.val('').removeClass('input-before-focus');
}
});
element.unbind('blur').bind('blur', function() {
var currentVal = element.val();
if( currentVal == '' ) {
element.val(defaultValue).addClass('input-before-focus');
}
});
}); // end function
};
})( jQuery );
(function($){
$.fn.loadEvents = function(){
return this.each(function(){
var containerObj = $(this);
$("input[default], textarea[default]",containerObj).defaultFormValues();
});
};
})( jQuery );
我像这样加载初始调用:
$("body").loadEvents();
当 ajax 容器被加载时,它会加载如下事件:
container.loadEvents();
由于某种原因,这些事件不适用于 ajax 调用。
任何帮助将不胜感激。
亚历山大
- 答
好的,我能够找出问题。每当您使用 container.replaceWith(...) 时,对元素"container"的引用不再可用,因为它已被删除并替换为该元素的新实例。
这是一个我只是错过的逻辑项目,以防万一任何一个遇到同样的问题。
亚历山大
如果您使用load()
或其他插入方法添加新的修饰符...插入这些元素后,您需要调用方法。
最简单的情况是
$('#content').load('path/to/server',function(){
/* new content exists, can bind event handlers to it*/
$(this).loadEvents()
});
相关文章:
- 召回窗口加载事件 - javascript
- 仅加载事件序列
- cookie加载事件页面重定向
- 正在捕获动态更改其源的图像的加载事件
- 如何从vb.net中的页面加载事件中调用特定的javascript函数
- 在iframe中加载pdf时,iframe未触发加载事件
- 点击加载事件按钮
- jQuery-将加载事件附加到动态加载的元素
- 不;t使用ajax在fullcalender.js中加载事件数据
- 加载事件中的“太多递归”
- 每10秒调用一次页面加载事件
- jQuery"该参考文献“;加载事件后未设置
- ASP网格视图的重新加载事件
- 在点击和加载事件时播放暂停背景音频
- 引导模式加载事件
- 页面中的条件在卸载之前加载事件
- 如何在 asp.net 中的页面加载事件之前调用 JavaScript 确认对话框
- 位置.重新加载事件触发按钮单击事件
- iframe 加载事件中的 setTimeout 似乎没有像预期的那样等待 x 秒
- 图像加载事件未触发