jquery - 关于jquery中的创建函数

标签 jquery ajax

已阅读 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/

相关文章:

javascript - 如何在 SOAP 中传递 Null?

javascript - 网页边界值

javascript - 将带有 jquery ajax 的 JSON 发布到 PHP

javascript - 不接收负数

javascript - 如何让 "display: none"元素出现

javascript - 重复的 javascript 正在加载 ajax

php - MySQL数据库中的未定义值

html - 什么是代表 "loading . . ."的良好 CSS 样式?

javascript - 是否可以在没有 link_to 的情况下呈现部分 onclick?

javascript - 一旦 MySql 获取了所有数据,如何停止我的滚动功能