jQuery 선택기 : ID로 끝나는가?


393

A는 거기에 selector내가 주어진 문자열 ID로 요소에 대해 그 끝을 조회 할 수있다?

ID가 인 요소가 있다고 가정 해보십시오 ctl00$ContentBody$txtTitle. 그냥 통과하여 어떻게 얻을 수 txtTitle있습니까?


16
좋은 오래된 마스터 페이지 ID 맹 글링!
Matthew Lock

1
ClientIDMode=staticASP.Net 4.0 이상에서 설정 하고 이것을 제거하십시오 :)
Murali Murugesan

1
ClientIDMode = static은 repeater에서 요소를 찾으려고 시도하는 사람들에게는 작동하지 않습니다!
스튜어트

답변:


629

요소 유형을 알고있는 경우 : (예 : 'element'를 'div'로 교체)

$("element[id$='txtTitle']")

요소 유형을 모르는 경우 :

$("[id$='txtTitle']")

사용 가능한 추가 정보



10
나는 '$ txtTitle'로 끝나는 것을 찾을 것입니다. 'txt'접두사에 큰 위험은 없지만 선택자가 'NameTextBox'인 경우 'NameTextBox', 'FirstNameTextBox', LastNameTextBox '등과 일치합니다.
Mark

11
익명의 사용자가 방금 다음을 편집하려고했습니다. 주석으로 추가하는 것이 좋습니다 (이치가있는 것 같습니다). 이것은 txtTitle로 끝나는 요소를 제공하지 않습니다. 다음은 문서입니다. api.jquery.com/element-selector ..element 선택기는 getElementsByTagName과 같습니다. 요소의 ID와 관련이 없습니다. id로 끝나는 요소에 액세스하려면이 구문 $ ( "[id $ = 'txtTitle']")을 사용하거나 요소의 유형을 알고있는 경우 ..eg div ..이 구문을 사용하려면 $ ( "div [id $ = 'txtTitle'] ")
Pekka

1
링크는 매우 유용했습니다. 자체 페이지는 아니지만 필요한 두 개의 추가 페이지로 분리되었습니다. 뷰 소스에서 ID가 "masterPage1_Control0_MyTableName_moreStuff"로 표시되는 경우와 같이 제목의 세그먼트를 캡처하는 방법을 배웠습니다. $ ( "id * = MyTable] "). 생각 해보니 id $가 더 좋아. 흠 ...
루카스

이것은 요소를 찾습니다 document.getElementById("f:fTest:j_idt51:0:inpTest"). 그렇지 않습니다 $("[id$='inpTest']"). 콜론은 ID로 허용되지 않기 때문입니까 (하지만 JSF가 추가합니다!)?
Panu Haaramo

의사 선택기와 같은 CSS와 함께이 선택기를 사용하는 방법이 있습니까?
Alejandro Nava

250

질문에 대한 대답은 $("[id$='txtTitle']"), 마크 허드 (Mark Hurd)는 대답으로 ,하지만 나 같은, ID가 모든 요소를 찾으려는 사람, 사람들을 위해 시작 (예를 txtTitle에 대한) 지정된 캐릭터 라인을,이 (시도 문서를 )

$("[id^='txtTitle']")

주어진 문자열 ( doc )을 포함 하는 id를 가진 요소를 선택하려면 :

$("[id*='txtTitle']")

주어진 문자열 ( doc ) 이 아닌 요소를 선택하려면 :

$("[id!='myValue']")

(특정 속성이없는 요소와도 일치)

주어진 단어를 포함하는 요소를 선택하려면 공백으로 구분됩니다 ( doc ).

$("[id~='myValue']")

주어진 문자열과 동일하거나 해당 문자열로 시작하고 하이픈 ( doc )으로 시작하는 요소를 선택하려면 다음을 수행하십시오 .

$("[id|='myValue']")

실제로 $ ( "[id $ = 'txtTitle']")과 같은 질문에 대답하는 것을 추가하고 목록에 먼저 넣으면 답을 투표하겠습니다. 난 당신이 질문에 대답하지 않기 때문에 순간에
Alan Macdonald

2
@AlanMacdonald 추가해야할지 모르겠습니다. 방문자에게 더 많은 정보를 추가하기 위해 답변이 수락 된 후 오랫동안 질문에 답변했습니다. 내 대답을 찬성하는 사람들도 그 질문에 대한 답을 찬성하기를 바랍니다.
Romain Guidoux

1
@RomainGuidoux는 충분히 귀하의 전화이지만, 질문에 대한 해결책을 제공하지 않는 답변은 찬성하지 않습니다. 왜냐하면 초보자가 페이지에 와서 문제가 발생하면 OP와 동일한 문제가 발생하기 때문에 분명하지 않기 때문입니다. 질문에 대답조차하지 않는 투표 답변. 질문에 답변하도록 변경 한 경우, 답변이 완전하고 유용한 답변이므로 수락 된 답변 대신 답변을 찬성합니다. 에테르는 또는 질문에 대한 답변이 아니라 수용된 답변에 대한 의견이어야합니다.
Alan Macdonald

1
@AlanMacdonald Done, 당신은 저를 설득했습니다.
Romain Guidoux

33

시험

$("element[id$='txtTitle']");

편집 : 4 초 늦게 : P


32
$('element[id$=txtTitle]')

일치하는 텍스트 조각을 인용 할 필요는 없습니다.


2
이것이 정답이어야합니다! '사용'과는 혼동된다.
키스 C. 바커

13

검색중인 용어에 밑줄 또는 $를 추가하는 것이 더 안전하므로 동일한 ID로 끝나는 다른 요소와 일치하지 않을 수 있습니다.

$("element[id$=_txtTitle]")

여기서 ( 요소 요소의 유형이 당신을 찾기 위해 노력하고 - 예를 들어 div, input

(ID에 $ 기호가있는 경향이 있다고 제안하지만 .NET 2는 이제 ID에 밑줄을 사용하는 경향이 있으므로 예제에서는 밑줄을 사용합니다).


1
그래, 너가 맞아. ID 속성은 밑줄을 사용합니다. 이름 속성은 달러 기호를 사용합니다.
Josh Stodola

3

예 : <a>ID가 _edit로 끝나는 모든을 선택하려면 :

jQuery("a[id$=_edit]")

또는

jQuery("a[id$='_edit']")

3

이것은 ASP.NET이므로 ASP <% = %> 태그를 사용하여 txtTitle의 생성 된 ClientID를 인쇄 할 수 있습니다.

$('<%= txtTitle.ClientID %>')

결과는 ...

$('ctl00$ContentBody$txtTitle')

... 페이지가 렌더링 될 때

참고 : Visual Studio에서 Intellisense는 ASP 태그를 JavaScript에 넣는 것에 대해 소리를 지 릅니다. 결과가 유효한 JavaScript이므로이를 무시할 수 있습니다.


4
영업 이익은없는 'ctl00$ContentBody$txtTitle'그가 가지고 'txtTitle', 그리고 당신은 최고의 누락 #ID를 일치. 그러나 OP는 이미 삭제 된 이후 유사한 제안을 거부했습니다 . 이 프로젝트에서는 행동 분리가 중요합니다.
Martijn Pieters

1

이 시도:

<asp:HiddenField ID="0858674_h" Value="0" runat="server" />

var test = $(this).find('[id*="_h"').val();

0

iframe이 많은 페이지에서 "iFrame"으로 끝나는 iframe ID를 찾으려면

jQuery(document).ready(function (){     
                  jQuery("iframe").each(function(){                     
                    if( jQuery(this).attr('id').match(/_iFrame/) ) {
                            alert(jQuery(this).attr('id'));

                     }                   
                  });     
         });
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.