ai didi

jquery - 如果刷新部分 DOM,我会丢失 jQuery 绑定(bind)吗?

转载 作者:行者123 更新时间:2023-12-01 03:50:51 24 4
gpt4 key购买 nike

我有以下内容:

<script type="text/javascript">
$(document).ready(function () {
$("input[id^='Position_'], select[id^='Level_'], input[id^='Title_'], select[id^='Status_'],").change(function (e) {
var type = $(this).attr('id').split('_')[0];
updateField('Menu', $(this), type);
});
});
</script>

这很好用。不过,我使用 Ajax 使用新的 HTMl、相同的字段和 ID 名称来刷新页面区域,但只是以不同的顺序排序数据。

$.ajax({
url: "/Administration/" + entity + "s/Detail2",
data: { pk: pk },
dataType: 'html',
cache: false,
success: function (responseText) {
$('#detailData').html(responseText);
}
});

刷新后,函数 updateField 不会被调用。

这是预期的行为还是我在其他领域犯了一些错误。

还有。我正在使用 IE 进行调试。有没有一种方法可以让我看到 updateField 绑定(bind)到元素的绑定(bind)?

最佳答案

根据您的示例,当您更改容器的 html() 时,附加到这些元素的所有事件也将被删除。

为了防止这种情况发生,请在容器上使用 delegate() (如果您使用的是 1.7+,则使用 on())来检查其中的元素。不要使用 live(),因为它已被弃用并且性能较差。

<script type="text/javascript">
$(document).ready(function () {
$("#detailData").delegate("input[id^='Position_'], select[id^='Level_'], input[id^='Title_'], select[id^='Status_'],", "change", function (e) {
var type = $(this).attr('id').split('_')[0];
updateField('Menu', $(this), type);
});
});
</script>

关于jquery - 如果刷新部分 DOM,我会丢失 jQuery 绑定(bind)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8788161/

24 4 0
文章推荐: javascript - XMLHttpRequest 无法加载 No 'Access-Control-Allow-Origin' > 请求的资源上存在 header
文章推荐: python 日志记录 : logger setLevel() is not enforced?
文章推荐: php - 网页扫描前隐藏提交按钮
文章推荐: jquery - document.forms[0].onsubmit 和 jQuery ("form").submit 之间的区别
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com