我不想问一个已经问过的问题,但是我看过的所有答案似乎都不适用于我的问题
我正在使用Microsoft UpdatePanel对象使用AJAX更新gridview。如果我在文档加载时加载gridview,那么我的jQuery效果很好。第一次使用AJAX更新时,jQuery不再起作用。
通过查看网络博客,我发现gridview对象与页面加载时存在的对象不同,并且我需要使jQuery重新熟悉新的DOM对象(我认为...对吧?? )。我浏览过的大多数网站(包括该网站上的帖子)都表明.on()jQuery函数可以为我提供帮助,但我不知道如何使用它来解决我的问题。
这是我的jQuery函数之一的示例,以防万一:
// Select/deselect all checkboxes on gridview
$("#chkSelectAll").change(function () {
var isChecked = $('#chkSelectAll:checked').val() ? true : false;
if (isChecked == true) {
$(".c_chkItem input").each(function () {
$(this).prop('checked', true)
});
} else {
$(".c_chkItem input").each(function () {
$(this).prop('checked', false)
});
}
});
我的问题是,当dot.net对象更新我的gridview时,如何让我的jQuery知道它?
StackOverflow的好人帮不了我,所以我把头发拉了几个小时。这是我的解决方案,以防遇到相同问题的任何人访问此页面。
如果您具有以下jQuery代码:
<script type="text/javascript">
$(document).ready(function () {
$('#myControl').val('some value');
}
</script>
第一次加载页面时它将起作用,但是如果myControl位于由ajax更新的UpdatePanel对象中,则jQuery函数将不再使用它。
要解决此问题,请将jQuery移动到document.ready函数之外的单独函数中,并使用以下代码:
<script type="text/javascript">
$(document).ready(function () {
// Whatever
}
function pageLoad(sender, args) {
if (args.get_isPartialLoad()) {
$('#myControl').val('some value');
}
}
</script>
现在,每次通过ajax重新加载页面时,myControl都会响应您的jQuery。
还有一件事,如果您有一个Webform控件需要在第一个Ajax调用之前看到jQuery,则可能还需要将jQuery语句放入document.ready函数中,以便在页面首次加载时触发,在每个ajax调用之后再次出现。我不需要这样做,也没有测试,但是我猜这是正确的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句