除了服务器端回调之外,如何调用javascript函数?

除了服务器端回调之外,如何调用javascript函数?,javascript,jquery,asp.net,updatepanel,Javascript,Jquery,Asp.net,Updatepanel,我有一些这样的标记: <form id="ddlSelections" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /> <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true" UpdateMode=

我有一些这样的标记:

<form id="ddlSelections" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />

    <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="DDL3" EventName="SelectedIndexChanged" />
        </Triggers>
        <ContentTemplate>
            <asp:DropDownList ID="DDL3" OnSelectedIndexChanged="testFunc" runat="server" />
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

<div id="placeholder"></div>
但是jQuery没有捕捉到这些事件。我猜这是因为ASP可能过度编写了事件处理程序

有没有办法做到这一点

编辑:渲染的内容:

<select id="DDL3" onchange="javascript:setTimeout('__doPostBack(\'DDL3\',\'\')', 0)" name="DDL3">

由于它是一个ASP.NET控件,您需要通过
客户端ID来引用它:

以下是测试用例:

<asp:UpdatePanel ID="pnl" runat="server">
    <ContentTemplate>
        <asp:DropDownList ID="DDL3" runat="server">
            <asp:ListItem Text="Test" Value="1"></asp:ListItem>
            <asp:ListItem Text="Test 2" Value="2"></asp:ListItem>
        </asp:DropDownList>                    
    </ContentTemplate>                
</asp:UpdatePanel>                
<div id="placeholder">I'm here</div>

您的“问题”是
或--,之后您可以按原样绑定:

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function () {
    $('#<%= DDL3.ClientID %>').click(function () {
        alert("Clicked " + $(this).val();
    });
});

$(“#DDL3”).change(){}
不是有效的JavaScript。你能发布一些具体的尝试吗?对不起!使用实际代码更新。作为参考,您不需要(或者确实需要)事件处理程序中的
javascript:
。它之所以“有效”,是因为它被解析为一个标签,但它没有任何用途<代码>javascript:
是一种URL方案,仅在链接目标中有用。谢谢。它仍然不起作用。当我检查呈现页面的HTML源代码时,它仍然替换我使用的ID。您还有什么建议吗?您的意思是它仍然使用
DDL3
而不是完整的ID吗?是的。此外,我还更新了我的问题,添加了您的建议后得到了什么效果。您是否将
clientdmode
设置为
Static
任何位置?实际上没有。我没有修改该设置。我目前正在研究这个问题:也许这与我的处境有关。我会在同一时间试试这个。+1好的
live
一个成功了!我会接受这个答案,因为它不需要任何ASP特定的黑客,而且解释对我非常有帮助。谢谢大家!@图例:如果将DropDownList放在实现InAdminContainer
中的
的控件内,则此操作将不起作用。您需要使用
ClientID
,这就是我建议使用它的原因。无论控件在页面中的位置如何,
ClientID
方法都会起作用。@JamesJohnson(如果可用)可以解决这个问题,但当然
ClientID
不太容易出错。很高兴看到有人还没有使用它,所以我留下了它。:)
$(function() {
    $("#<%=DDL3.ClientID%>").change(function(e) {
        $("#placeholder").html("Hello world!");
    });
});
$(function() {
    $("#<%=DDL3.ClientID%> option").click(function() {
        $("#placeholder").html("Hello world!");
    });
});
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function () {
    $('#<%= DDL3.ClientID %>').click(function () {
        alert("Clicked " + $(this).val();
    });
});
$('#<%= DDL3.ClientID %>').live('click', function () {
    alert("Clicked " + $(this).val());
});