jQuery的$()函数总是使用AJAX返回'undefined'

时间:2009-02-26 01:45:33

标签: asp.net jquery ajax pagerequestmanager

我注意到popup显示BEFORE文本在文本框中更新之前,我猜js在页面呈现之前被调用...这将解释'undefined'弹出窗口...我如何确保js被调用在呈现页面之后?

重写以使其尽可能简单:

<body>
<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="txtRcaNotes" runat="server" TextMode="MultiLine" Width="800px"></asp:TextBox><br />
            <asp:Button ID="btnDoneWithRcs" runat="server" OnClick="btnDoneWithRcs_Click" Text="Action Completed / Update Notes" />
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

<script type="text/javascript">

        var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm.add_endRequest(
            function(){doStuff();}
            );

        function doStuff()
        {
            $(document).ready(function() {
                                $('txtRcaNotes').hide(); 
                                alert($('txtRcaNotes').attr('id'));
                                });
        }

</script>
</body>

代码背后:

protected void btnDoneWithRcs_Click(object sender, EventArgs e)
{
    txtRcaNotes.Text += "asdfadf";
}

TEXTBOX不会隐藏,警告()退回'未定义'

alt text

2 个答案:

答案 0 :(得分:1)

您只是错过了您的id选择器语法。尝试:

$('#<%= txtRcaNotes.ClientID %>').hide(); 
alert($('#<%= txtRcaNotes.ClientID %>').attr('id'));

请注意在每个选择器之前加上"#"

答案 1 :(得分:0)

您可以尝试的一件事是使用Firebug或其他DOM检查器,并检查ASP.NET在AJAX调用之前和之后生成的实际元素ID,看看它们是否相同。