我有一个第三方组件。它是一个日历控件。我有一个客户端事件,它会触发 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 中的引用似乎是一个问题。
有什么想法吗?
最佳答案
我将尝试阐明这个问题:
$find
不是 jQuery 方法,尽管它可能看起来像一个。它来自 ASP.NET Ajax,用于在客户端查找 ASP.NET Ajax 组件。正确的用法是不带“#” - 它需要组件的 ID,在大多数情况下是 ClientID 服务器属性。- 我认为您可能正在使用基于 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/