我不想问一个已被问过的问题,但我所看到的答案似乎都没有适用于我的问题
我使用Microsoft UpdatePanel对象使用AJAX更新gridview。如果我在文档加载时加载gridview,我的jQuery工作得很好。我第一次使用AJAX更新时,jQuery不再工作了。
通过查看网络博客,我发现gridview对象与加载页面时存在的对象不同,我需要使用新的DOM对象重新熟悉我的jQuery(我想...对...?)。我查看过的大多数网站,包括这个网站上的帖子,都表明.on()jQuery函数对我有帮助,但我无法弄清楚如何用它来解决我的问题。 / p>
这是我的一个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了解它呢?
答案 0 :(得分:0)
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>
现在myControl将在每次页面被ajax部分重新加载时响应你的jQuery。
还有一件事,如果你有一个需要在第一次ajax调用之前看到jQuery的webform控件,你可能还需要将你的jQuery语句放在document.ready函数中,以便它在页面时触发首次加载,每次ajax调用后再次加载。我不需要这样做,我没有测试过,但我猜这是正确的。