Jquery服务器控件单击事件未触发

时间:2014-04-21 01:10:37

标签: javascript jquery asp.net button

Web表单上有服务器控制按钮,它位于updatepanel控件内。

<asp:Button runat="server" Text="Save Details" ID="btnSave" Width="130px" 
ClientIDMode="Static"></asp:Button>

脚本在外部文件中。

$(document).ready(function () {
$('<%= btnSave.ClientID %>').click(function () {

        alert('msg');
    });
});

所有其他脚本运行正常,但这个脚本没有触发。

2 个答案:

答案 0 :(得分:0)

您的选择器中缺少#

$(document).ready(function () {
    $('#<%= btnSave.ClientID %>').click(function () {
//     ^ add # here
        alert('msg');
    });
});

答案 1 :(得分:0)

一方面你正在使用ClientIDMode="Static"而另一方正在尝试<%= btnSave.ClientID %>

使用<%= btnSave.ClientID %>将获取元素的呈现ID。并且您的Button的ID与使用ClientIDMode="Static"的ID相同。仅当您的控件在页面上呈现多个时间时才应该使用它。使用<%= btnSave.ClientID %>会在页面上放置额外的开销,并在每次渲染HTML时点击该行。

所以结论说。使用'#btnSave'作为元素选择器,如果您的元素在页面上单次渲染,请避免使用<%= btnSave.ClientID %>

这将是相同的。

$(document).ready(function () {
    $("[id$='btnSave']").click(function () {
        alert('msg');
    });
});