2011-09-29 5 views
15

문자열로 시작하는 속성을 가진 요소를 찾기 위해 선택자를 만들고 싶습니다. 이 시점에서이 셀렉터가 존재하지 않는다고 가정합니다. 선택기 기능을 확장해야합니까? Extending jQuery’s selector capabilities James Padolseyjquery를 사용하여 접두어와 일치하는 data- * 속성을 포함하는 요소를 찾으려면 어떻게합니까?

속성 접두어 선택기 [name | = "value"]와 같은 것을 표현해야하지만 "value"와 일치하는 대신 속성의 이름과 일치해야합니다. 속성의 값.

<tag data-plugin-option1="val1" data-plugin-option2="val2" />

나는이 같은 구문을 끝내고 싶습니다 : 그것은 data-plugin

+2

내가 생각하는'.DATA()'지금은 기억이 안나요, 자동으로 다음을 구문 분석 –

+2

@Pekka : OP에서 일치하는 속성 이름 (또는 부분 이름)을 가진 * 요소 *를 반환하는 선택기를 찾고 있다고 생각합니다. – user113716

+0

예, 요소를 반환하는 선택 도구를 찾고 있습니다. – JJS

답변

11

잘 시작 적어도 하나 개의 요소를 가지고 있기 때문에 요소 tag을 찾아야한다 $('tag(:attr|="data-plugin")')이, 내가 추측 당신의 질문을 다르게 읽는 중입니다.

내가 읽은 방식으로 주어진 속성 이름 (또는 그 이름의 시작 부분)을 가진 요소를 선택하는 사용자 지정 선택기를 만들고 싶습니다.

그렇다면 각 요소에 대해 attributes 컬렉션을 반복해야한다고 생각합니다.

DEMO : 그냥 HTML 5에 있었 수도 있지만http://jsfiddle.net/GgmM7/

$.extend($.expr[':'],{ 
    attrNameStart: function(el,i,props) { 

     var hasAttribute = false; 

     $.each(el.attributes, function(i,attr) { 
      if(attr.name.indexOf(props[3]) !== -1) { 
       hasAttribute = true; 
       return false; // to halt the iteration 
      } 
     }); 

     return hasAttribute; 
    } 
}); 

$('img:attrNameStart(data-plugin)') 
+0

그것은 아름다운 코드입니다. 왜 내가 그렇게 결석한지 모르겠다. 나는 dom 요소의'attributes' 속성을 잊었다. 정말 고마워! – JJS

+0

@JJS : 천만에요. – user113716

+0

그냥 굉장합니다. 감사. – itslittlejohn

관련 문제