2008-10-02 3 views
15

jquery를 사용하여 첫 번째 중요한 스크립트를 구현할 때 페이지에서 특정 웹 컨트롤을 찾아야했습니다. DotNetNuke를 사용하기 때문에 컨테이너 컨트롤이 사이트마다 변경 될 수 있으므로 컨트롤 ClientID를 보장 할 수 없습니다. 컨트롤의 서버 ID로 끝나는 ID를 찾는 애트리뷰트 선택기를 사용했다.jQuery를 사용하여 ASP.Net 컨트롤을 찾는 가장 좋은 방법은 무엇입니까?

$("select[id$='cboPanes']") 

이것은 최상의 방법이 아닌 것처럼 보입니다. 이것을 할 또 다른 방법이 있습니까?


@Roosteronacid @Roosteronacid - 내가 원하는 컨트롤을 얻는 동안, 나는 주어진 기술/언어에 대한 관용구를 따라하려고합니다. C#으로 프로그래밍 할 때 C# 기능을 최대한 활용하는 방식으로 시도합니다. 이것이 jQuery를 실제로 사용하는 첫 번째 노력이기 때문에 수천 명의 사용자가 10 명이 사용하게 될 것이므로 다른 사람들에게도 좋은 예인 코드를 작성하고 싶습니다.

@toohool - 확실히 작동하지만 불행히도 성능상의 이유로 별도의 파일로 자바 스크립트를 유지해야합니다. 각 "페이지"가 ​​동적으로 생성되기 때문에 자바 스크립트를 인라인하면 캐싱을 잘 활용할 수 없습니다. 페이지의 다른 내용이 변경 되었기 때문에 동일한 자바 스크립트를 클라이언트에 반복해서 보내 게됩니다.


@Roosteronacid는 - 내가 원하는 컨트롤을 얻고 동안, 나는 주어진 기술/언어의 숙어를 따라하려고합니다. C#으로 프로그래밍 할 때 C# 기능을 최대한 활용하는 방식으로 시도합니다. 이것이 jQuery를 실제로 사용하는 첫 번째 노력이기 때문에 수천 명의 사용자가 10 명이 사용하게 될 것이므로 다른 사람들에게도 좋은 예인 코드를 작성하고 싶습니다.

@toohool - 확실히 작동하지만 불행히도 성능상의 이유로 별도의 파일로 자바 스크립트를 유지해야합니다. 각 "페이지"가 ​​동적으로 생성되기 때문에 자바 스크립트를 인라인하면 캐싱을 잘 활용할 수 없습니다. 페이지의 다른 내용이 변경 되었기 때문에 동일한 자바 스크립트를 클라이언트에 반복해서 보내 게됩니다.

+0

1 # "JQuery와 목록 컨트롤"에 대한 1 구글 – jrcs3

답변

2

컨트롤에 마커 클래스를 사용하고 jQuery를 통해 해당 클래스를 선택하십시오.

+0

을 당신은 적절한 의미 (클래스가 아니라 식별자로 사용하는 클래스)에 대한 stickler, 그것은 이상적 아니에요. 또한 클래스 이름 별 선택은 ID 별 선택보다 훨씬 느립니다. –

8
$("#<%= cboPanes.ClientID %>") 

이렇게하면 컨트롤의 DOM ID가 동적으로 삽입됩니다. 물론 이것은 JS가 외부 JS 파일이 아닌 ASPX 파일에 있어야한다는 것을 의미합니다.

+0

페이지에서 더 많은 불필요한 텍스트가 필요하고 더 불편한 독서 경험이 필요한 경우 좋습니다. – ppumkin

2

성능면에서는 조금 비싸지 만 그 선택기를 사용하는 데는 잘못된 것이 없습니다. 아무튼; 액세스하려는 컨트롤을 얻고 있습니다.

3

위의 자바 스크립트 가져 오기에서 내가 수행 한 한 가지 사실 (자바 스크립트가 아닌 jQuery)은 동적 컨트롤 ID가 toohool이 권장하는 것과 유사한 것으로 출력되어 내 스크립트 가져 오기에서 참조하는 변수에 지정합니다 .

, 캐싱을 활용하고 여전히 정확한 클라이언트 ID가 할 수 있도록 허용해야이 같은

뭔가 : 경우이 작동하는 동안

<head> 
    <script type="text/javascript> 
     var cboPanesID = <%= cboPanes.ClientID %>; 
    </script> 

    <!-- this JS import references cboPanesID variable declared above --> 
    <script src="jquery.plugin.js"></script> 
</head> 
관련 문제