【问题标题】:jQuery stop working on updated page via Ajax in ASP.NET MVCjQuery 停止在 ASP.NET MVC 中通过 Ajax 处理更新的页面
【发布时间】:2009-02-13 16:16:15
【问题描述】:

我有一个特定日期的事件的 ASP.NET MVC 页面。我也在使用 jQuery datepicker,当我选择一天时,我创建了一个函数,通过 Ajax 将这个选定的日期发送到 MVC ActionResult 方法,这个方法将处理这一天,将完成所有数据库东西,并将返回我这个选定日期的所有事件。到目前为止,一切都很好......

在那之后,我尝试使用 jQuery 线索提示通过 Ajax 向我展示一些事件细节,这也有效...... 部分!!!

为什么是部分?当我第一次(也是第一次)加载页面时,提示效果很好,所有的 Ajax 东西!在所有第一次加载中,页面将显示今天的事件,这不是通过 Ajax,它只是一个 ViewData["events"] 为页面发送信息。但是,如果我选择一天,页面会通过 Ajax 更新,但提示不再起作用了!!他们没有显示任何东西......我将链接悬停,没有任何反应......什么也没有。

我认为这是一个提示问题,但令我惊讶的是它不是......

仅出于测试目的,我在 jQuery 中创建了这个:

$(".myLink").click(function(){ alert($(this).attr("id")); }

当页面第一次加载时,这个代码可以工作,但是如果我选择另一天并且页面被更新,这个 jQuery 代码就不再工作了!!点击功能根本不起作用!!

那么,结束这个疑问……有人知道会发生什么吗?为什么我的 jQuery 代码在通过 Ajax 更新的 ASP.NET MVC 页面中不起作用??

谢谢大家!!

【问题讨论】:

    标签: asp.net-ajax jquery


    【解决方案1】:

    绑定事件时使用live函数-

    $(".myLink").live("click", function(){
        alert($(this).attr("id"));
    });
    

    这将确保所有带有 .myLink 的元素都会受到该事件的影响,即使它们稍后会被动态加载。

    这并不适用于每个事件,所以检查文档: http://docs.jquery.com/Events/live

    【讨论】:

      【解决方案2】:

      在 ajaxComplete 上再次添加鼠标悬停/单击事件处理程序。 jQuery 选择器并不总是适用于动态添加到页面的文档元素,例如从 AJAX 调用返回的元素。

      此代码在内容填充后立即重新绑定您的事件:

      $.get("/getMyContent/" + eventID, "{}", function(content) {
        $(".contentArea").html(content);
        $(".eventLink").click(function(){
          doMyPopupEtc();
        });
      });
      

      【讨论】:

      • 谢谢彼得!答案是朝着你的方向......在ajax回调之后重新绑定jQuery事件!谢谢大家!!
      【解决方案3】:

      它与路径有关。引用脚本时,请务必使用

      【讨论】:

      • 刚才你说的我明白了,但是为什么路径有问题??? jquery 工作得很好......
      • 我更改了脚本路径,但问题仍然存在... :-(
      【解决方案4】:

      不太可能,但是当 MVC 由于 AJAX 调用而更新容器时,您可能会清除负责显示线索提示的 JS。也就是说,当然,如果该 JS 被声明为内联,则在文档中。

      【讨论】:

      • JS 在 Site.Master 中声明以及提示。我正在“谷歌搜索”,发现一些关于在这些 Ajax 回调中重新绑定我的 jQuery 的东西......应该是这样吗?
      • 嗯... Microsoft AJAX 框架也使用美元变量 ($),所以有时这可能是您的问题。尝试更改在 AJAX 调用后停止工作的代码到用户 jQuery 变量而不是 $(即 jQuery(".myLink").click...) 无处不在,看看是否可以解决它。
      • “使用 jQuery 变量”,当然不是“使用 jQuery 变量”:)
      【解决方案5】:

      首先我以为我遇到了类似的问题。事实证明,我分配了两次提示提示,导致它无法正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-07
        • 2012-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多