gpt4 book ai didi

jQuery .on() 和 UpdatePanels

转载 作者:行者123 更新时间:2023-12-01 06:28:53 27 4
gpt4 key购买 nike

我有一个 UpdatePanel,用于替换页面内的内容。在 UpdatePanel 之外,我有一些 jQuery 使用 on() 函数来分配一些按钮点击。据我了解the new jQuery.on() syntax旨在替换事件处理程序和旧的 live() 功能。 live() 函数应该监视页面的更改并将事件附加到添加到页面的任何元素,但使用 on() 函数不会发生这种情况我的测试页。如果我在 UpdatePanel 更改后打开控制台并运行相同的函数,则事件处理程序可以正常工作。

这是我的 javascript 知识:

$(function () {
$('.results').on('click', function () {
$(this).children('.explination').slideToggle();
});
});

UpdatePanel 是一个简单的 UpdatePanel,其中包含 MultiView。

我知道我可以使用 Microsoft Ajax PageRequestManager 来处理这个问题,但如果事件像我认为的那样绑定(bind),那么似乎没有必要。我现在会使用它,但我很好奇是否我做错了,或者 jQuery 和 ASP.Net 是否不能一起工作。

我的一个理论是,无论出于何种原因,UpdatePanel 都无法触发 jQuery 用来捕获更改并再次触发 on 事件的 DOM 更新触发器。

最佳答案

诀窍是使用委托(delegate)事件。引用自 jQuery 文档:

委托(delegate)事件的优点是它们可以处理来自稍后添加到文档中的后代元素的事件。通过选择在附加委托(delegate)事件处理程序时保证存在的元素,您可以使用委托(delegate)事件来避免频繁附加和删除事件处理程序的需要。

要使用委托(delegate)事件,请将选择器作为第二个参数传递,例如:

$('html').on('click', '.results', function () {
$(this).children('.explination').slideToggle();
});

关于jQuery .on() 和 UpdatePanels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11082759/

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