jquery #find在部分回发时出现问题

时间:2010-06-11 05:11:18

标签: 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(右键单击),使用$ find statment错误和'null'。

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

然而,事件正在解雇,而javascript正在运行 - 这是DOM中的引用似乎是一个问题。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

我将尝试解释这个问题:

  1. $find不是jQuery方法,尽管它可能看起来像一个。它来自ASP.NET Ajax,用于在客户端查找ASP.NET Ajax组件。正确使用没有“#” - 它在大多数情况下需要组件的ID,即ClientID服务器属性。
  2. 我认为您可能正在使用基于ASP.NET Ajax的第三方组件库。这个库很可能不支持MVC的Ajax方式。 MVC Ajax不能用作ASP.NET Ajax - 它不作为UpdatePanel,也不在部分视图中执行脚本标记。因此,日历组件永远不会被初始化,$ find会正确返回null
  3. 是什么给出的?我建议你尝试使用jQuery ajax加载部分视图。它可以正确执行任何嵌入式JavaScript代码,并可能带来更好的结果。

答案 1 :(得分:0)

你的意思是menu = $('#2_menuSharedCalPopUp');

$ find根本没有在你的函数中声明。

在jQuery中使用.find()是

<div id="parent">
   <div class="child" />
</div>

$('#parent').find('.child'); // useful for cached jQuery objects

答案 2 :(得分:0)

从部分视图通话返回时,您是否检查过姓名和ID?可能是id已经改变了。

如果是这种情况,那么给控件一个名为“MyCalendar”的类名,然后使用$find(".MyCalendar");

答案 3 :(得分:0)