gpt4 book ai didi

jquery - $(html)/$.ajax 的 document.ready() 模拟

转载 作者:行者123 更新时间:2023-12-01 01:12:30 25 4
gpt4 key购买 nike

我使用 jQuery 在 $(document).ready() 处理程序中附加一些插件 - 例如 $(".date").datepicker()。但是,当我使用 $("...html...") 加载内容时,例如从 $.ajax(.., success(data){}) 或 ajaxForm({target:...}) 加载内容, document.ready() 显然没有被调用。更新:正如所指出的,它调用,但我仍然不知道加载了哪个部分/元素。

我不能再次执行ready(),因为它会第二次将插件重新附加到已经拥有它的元素上。所以我必须在每种情况下手动执行此操作,例如,我执行 success(data) { item = $(data); initDatePickerEtc(项目); }.

有更好的方法吗?

Live Query为事件执行此操作的插件。有什么东西可以让我跟踪 HTML 元素的创建并执行操作吗?类似的东西

$.oncreation(".date", function() { $(this).datepicker(); });
// or at least
$.oncreation(function() { $(this).find(".date").datepicker(); });

如果它也能处理现有元素,那就太好了……就像实时查询一样,既适用于调用 click() 时存在的元素,也适用于将来创建的元素。

请注意,我很乐意只跟踪 jQuery 创建的元素。所以我猜,要么 jQuery 为其 html() 函数提供了扩展点,要么没有。现在,从 jQuery 来源来看,它没有:

html: function( value ) {
return value === undefined ?
(this[0] ?
this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
null) :
this.empty().append( value );
},

也许如果我替换 html() ,那么即使是第 3 方插件(例如 ajaxForm)也会使用我的版本(将触发 $.creation 回调)而不是默认的 jQuery 版本...它会工作吗?这种方法存在问题 - 它不仅是 html(),它是append() 等...并且仅当 $("") 的结果附加到文档中时才能获取事件会很棒...因为当它在内存中时我不需要 datepicker()。

最佳答案

如果您可以选择,您可以在返回的 html 中包含 $(document).ready() 语句。渲染返回的 html 后将调用传递到那里的函数。

关于jquery - $(html)/$.ajax 的 document.ready() 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1590666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com