阅读this question后,我发现答案已过时/贬值,因此我在问是否有人会更新任何内容。答案:
JQuery是否具有类似
的函数调用$('#myNewDivId').on('create', function(){
});
单个div,或多个'追加':
$('.myNewDivWithClass').on('create', function(){
});
是否为动态创建的div?
我要做的就是创建这个新元素',就是将ajax回拨给我的控制器以“替换”#39;这个div有局部视图吗?但是,如果没有使用jquery方法,它似乎比预期更困难
答案 0 :(得分:2)
没有神奇的浏览器解决方案适用于所有旧浏览器,尽管有一些使用浏览器特定功能的解决方法,但是,如果您可以控制新的浏览器创建元素,只需在添加后在该新元素(或其容器)上广播自定义事件。
e.g。
var newDiv = $('<div>', {id: myNewDivId});
$('#somewhere').append(newDiv);
newDiv.trigger('myname.loaded'); // trigger event on new element
并在主JS中听取事件:
$(document).on('myname.loaded', function(e){
// e.target is the element added
$(e.target).css('color', 'red');
});
JSFiddle: http://jsfiddle.net/TrueBlueAussie/epg09n4d/3/
下面建议您将此附加功能包装在一个函数中,但假设您始终使用append
添加元素。相反,您可以使用jQuery扩展方法:
e.g。向jQuery添加modified
方法
jQuery.fn.modified = function () {
this.trigger('myname.loaded');
return this;
};
并调用父容器(而不是元素):
$('#somewhere').append(newDiv).modified();
JSFiddle: http://jsfiddle.net/TrueBlueAussie/epg09n4d/7/
注意:定位容器(不是添加的元素)似乎更有用,并且与我们用于面板Ajax更新的模式相匹配。