jquery - jquery #find 关于部分回发的问题

标签 jquery asp.net-mvc postback partial

我有一个第三方组件。它是一个日历控件。我有一个客户端事件,它会触发 javascript 以显示弹出菜单。我在客户端做所有事情,这样我就可以使用 MVC。

dd

   function MouseDown(oDayView, oEvent, element) {

    try {

        e = oEvent.event;

        var rightClick = (e.button == 2);
        if (rightClick) 
        {
            var menu = $find("2_menuSharedCalPopUp");
            menu.showAt(200, 200, e);
        }


    }
    catch (err) {
        alert("MouseDown() err: " + err.description);
    }


}

JavaScript 最初与 $find 一起完美触发。

我有另一个客户端方法,它通过部分回发来更新日历。完成此操作后,所有后续 MouseDowns( 右键单击​​) 都会使用带有“null”的 $find 语句错误。

人们遇到的所有类似问题似乎都与回发后调用 javascript 有关 - 解决方案是使用 PageRequestManager 重新注册事件或在服务器上注册客户端函数 - 等等。

但是,事件正在触发,并且 javascript 正在工作 - DOM 中的引用似乎是一个问题。

有什么想法吗?

最佳答案

我将尝试阐明这个问题:

  1. $find 不是 jQuery 方法,尽管它可能看起来像一个。它来自 ASP.NET Ajax,用于在客户端查找 ASP.NET Ajax 组件。正确的用法是不带“#” - 它需要组件的 ID,在大多数情况下是 ClientID 服务器属性。
  2. 我认为您可能正在使用基于 ASP.NET Ajax 的第三方组件库。该库很可能不支持执行 Ajax 的 MVC 方式。 MVC Ajax 不像 ASP.NET Ajax 那样工作 - 它不充当 UpdatePanel,并且不执行分部 View 中的脚本标记。因此,日历组件永远不会初始化,并且 $find 正确返回 null

什么给了?我建议您尝试使用 jQuery ajax 加载部分 View 。它可以正确执行任何嵌入的 JavaScript 代码,并可能带来更好的结果。

关于jquery - jquery #find 关于部分回发的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3020322/

相关文章:

jquery - 使用 jquery 删除 html 标签中的 no-js 类

javascript - 如何在 Mechanize 中模拟 javascript?

javascript - 按钮返回我来的页面 - 带推荐人

javascript - 在html表格的行下方显示div?

javascript - 根据返回的数据隐藏和取消隐藏表 div

asp.net-mvc - SignalR 似乎减慢了我的 MVC/Azure 应用程序的启动速度

jquery - 使用自定义验证的 FileExtension Validation 会创建重复和无效的 data-* 属性

javascript - 单击复选框并单击还原按钮时如何打开 Jquery 对话框弹出窗口

asp.net - 在 TextChanged 上停止回发

javascript - 如何检查 JavaScript 中的 Unicode 输入值?