2013-02-09 8 views
0

에 정말 간단한 예제 나던 작품은 이유를 이해 해달라고 내 ASP 페이지에서간단한 jQuery를 안녕하세요 세계 ASPX

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

을,이 간단한 코드가

<%@ 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); 
    } 

을 이게 뭐가 잘못된 건지보십시오. 나는 scprit를 aspx 안에 직접 넣으려고했지만 아무 것도하지 않았다. 다음 간단한 HTML 페이지에 시도하고 잘 작동합니다.

내가 아주 멀리 해요 그래서 같은 간단한 예를 나에게 문제 등이 많이 발생하는 경우 성공하기 위해 내 페이지에 jQuery를 사용하여 음모를 꾸미고 라이브러리를 사용하려면 ... 롤

답변

0

마스터 페이지를 사용하기 때문에이 버튼의 ID는 #Button1이되지 않습니다. 내가 의미하는 것을보기 위해 출처를 보아라.

이 문제를 해결하려면 자바 스크립트에서 실제 ID를 볼 수 있어야합니다. 당신의 Page_Load 방법이 같은

뭔가 : 다음 myAlert 방법은 다음과 같이해야합니다 것을 의미

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

:

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

이 페이지에서 다음을 생성합니다

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

감사합니다. 나는 소스에서 알았지 만, 디 컴파일러를 사용할 때처럼 버튼에 주어진 '일반적인'이름이라고 생각했습니다 ... – GuillaumeA

1

내 디버그 콘솔을 확인하십시오 "$"가 정의되지 않았는지 확인하기 위해 사용중인 브라우저. 전체 ASP.NET 접근법을 사용할 때 jquery가 누락 된 것처럼 들립니다.

관련 문제