已阅读 this question ,我发现答案已过时/已贬值,因此我询问是否有人有以下问题的“更新”答案:
JQuery 是否有类似的函数调用
$('#myNewDivId').on('create', function(){
});
对于单个 div 或多个“附加”:
$('.myNewDivWithClass').on('create', function(){
});
对于动态创建的div?
- 我宁愿不包含插件(尤其是“过时的”插件,例如 .livequery() 插件)
- “DOMSubtreeModified”似乎已被贬值,那么还有替代方案吗?
- 我需要此功能(至少)与 IE 10 + 11 兼容。
我想要做的是创建这个“新元素”,是有一个ajax回调到我的 Controller 以用部分 View “替换”这个div?然而,没有jquery方法使用,似乎比想象的更困难
最佳答案
没有适用于所有旧版浏览器的神奇浏览器解决方案,尽管有一些使用特定于浏览器的功能的解决方法,但是,如果您可以控制新浏览器的创建元素,添加后只需在该新元素(或其容器)上广播自定义事件。
例如
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 扩展方法:
例如向 jQuery 添加修改的
方法
jQuery.fn.modified = function () {
this.trigger('myname.loaded');
return this;
};
并调用父容器(而不是元素):
$('#somewhere').append(newDiv).modified();
JSFiddle: http://jsfiddle.net/TrueBlueAussie/epg09n4d/7/
注意:针对容器(而不是添加的元素)似乎更有用,并且与我们用于 Ajax 面板更新的模式相匹配。
关于jquery - 关于jquery中的创建函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27419375/