asp.net AJAX调用,jQuery不再有效

时间:2015-05-20 02:06:17

标签: jquery ajax gridview updatepanel

我不想问一个已被问过的问题,但我所看到的答案似乎都没有适用于我的问题

我使用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了解它呢?

1 个答案:

答案 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调用后再次加载。我不需要这样做,我没有测试过,但我猜这是正确的。