0

我真的不明白为什么这个简单的例子不起作用:S 我有一个 WebApplication,其中有一个脚本:

function myAlert() {    
    $("#Button1").click(function () {
        alert("Hello world!");
    });
}

在我的asp页面中,我有这个简单的代码

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Graph.aspx.cs" Inherits="WebApplication.Graph" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">  
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button" Width="100px"/>
</asp:Content>

最后我在 cs 中注册了脚本:

   protected override void OnPreLoad(EventArgs e)
   {
        Page.ClientScript.RegisterClientScriptInclude("jQuery",
                        ResolveUrl(@"Scripts\jquery-1.4.1.js"));
        Page.ClientScript.RegisterClientScriptInclude("jMyAlert",
            ResolveUrl(@"Scripts\MyAlert.js"));
        // check if the start up script is already registered with a key
        if(!Master.Page.ClientScript.IsStartupScriptRegistered("jMyAlert"))
        {
            // since it is not registered, register the script
            Master.Page.ClientScript.RegisterStartupScript
                (this.GetType(), "jMyAlert", "myAlert();", true);
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "jMyAlert", "myAlert()", true);
    }

我不明白这有什么问题。我试图将脚本直接包含在 aspx 中,但没有。然后我尝试到一个简单的 html 页面,它工作正常。

我想在我的页面中使用一个使用 jQuery 的绘图库,所以如果这样一个简单的例子给我带来了很多问题,我离成功还很远......哈哈

4

2 回答 2

1

尝试在您使用的任何浏览器中检查调试控制台,以查看“$”是否未定义。听起来您在使用完整的 ASP.NET 方法时缺少 jquery。

于 2013-02-09T03:42:47.037 回答
0

该按钮的 Id 不会是#Button1因为使用了母版页。尝试查看源代码以了解我的意思。

为了解决这个问题,您需要能够在 JavaScript 中看到实际的 Id。

在你的Page_Load方法中是这样的:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
    "Button1Id", string.Format("var Button1Id = '{0}';", Button1.ClientID), true);

将在您的页面中创建以下内容:

<script type="text/javascript">
//<![CDATA[
var Button1Id = 'Button1';//]]>
</script>

这意味着您的myAlert方法需要如下所示:

function myAlert() {
    $("#" + Button1Id).click(function () {
        alert("Hello world!");
    });
}
于 2013-02-09T03:45:51.563 回答