gpt4 book ai didi

javascript - Jquery - (重新)连接动态生成的元素

转载 作者:行者123 更新时间:2023-12-01 02:17:32 26 4
gpt4 key购买 nike

我经常将元素与附加功能 Hook ,例如:

$('.myfav').autocomplete();
$('.myfav').datepicker();
$('.myfav').click(somefunction);

但是当通过某些代码动态生成此类的更多实例时,新的 $('.myfav') 已失效并需要重新连线,因此我这样做:

$("#somelink").click(function(){
//generate 10 new $('.myfav') and append them to the DOM
//re-wire them again as in the block above
$('.myfav').autocomplete();
$('.myfav').datepicker();
$('.myfav').click(somefunction);
});

这意味着我最终拥有 2 个相同的代码块,1 个用于初始页面加载,另一个用于重新连接动态生成的新元素。这不是 DRY 代码,效率也不是很高。

这真的是完成此任务的唯一方法,还是还有其他最佳实践?我的直觉告诉我一定有比这更有效的东西(也有助于干燥代码)。

更新

看起来 .live 与 .click 配合得很好,如 cletus 所解释的那样。

$('.myfav').live("click", somefunction);

但是我尝试使用 .autocomplete 等自定义设置插件,但它不起作用。我试过这个:

$('.myfav').live("click", autocomplete("somefile.php", {max: 15, mustMatch: true}));

所以live看起来不能处理这些自定义插件(当然我可能是错的,如果你知道的话请更新)

最佳答案

.live() 文档说......

.live doesn't support the no-event style callback that liveQuery provides. Only event handlers can be bound with .live.

所以我看了一下liveQuery ,我认为它会完全满足您的需要,如下所示:

$('.myfav').livequery(function() {
$(this).autocomplete();
$(this).datepicker();
$(this).click(somefunction);
});

看起来很方便!

关于javascript - Jquery - (重新)连接动态生成的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1581518/

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