2013-06-06 5 views
2

일부 HTML 입력의 이름에 여러 개의 대괄호가 포함되어 있습니다.jQuery .filter() 메서드가 jQuery 1.5.1에서 예상대로 요소를 반환하지 않습니다.

예.

<input name="skus[0].skuattributeoptions[1].sao_option_id" value="559" /> 

값을 따옴표로 묶을 때 대괄호로 속성 값을 가질 수 있다는 것을 읽었습니다. 어느 쪽이 좋을까. 위와 같은 이름을 가진 요소를 포함하는 jquery 객체에 .filter()를 사용하면 요소가 반환되지 않습니다.

다음은 Chrome 콘솔의 출력을 캡쳐 한 것입니다.

inputs = $('[name="skus[0].skuattributeoptions[1].sao_option_id"]') 은 예상대로 세 가지 요소를 반환합니다.

그러나 내가 동일한 내용의 묶음에 inputs.filter('[name="skus[0].skuattributeoptions[1].sao_option_id"]')을 사용할 때 나는 아무것도 반환하지 않습니다.

.filter()에 전달 된 선택 도구에 대괄호 세트가 하나만있는 경우 예를 들어 inputs.filter('[name*="skuattributeoptions[1].sao_option_id"]') 필터가 예상 한 것을 반환합니다!

jQuery 1.5.1을 사용하고 있습니다. 내가 뭔가 잘못하고 있는거야? .filter() 첨가 마지막 기능 jQuery를 1.4 (1.0 셀렉터 필터)에있는 동안

http://www.photogifts.co.uk/content/images/affiliate/example/jquery-filter-issue.png

+3

jQuery 1.5.1을 사용하지 않고 예상대로 작동합니다. http://jsfiddle.net/fjeCX/ – undefined

+0

jquery를 업그레이드하십시오. –

답변

1

은, 난 그냥 jQuery를 1.5.1 사용하여 시도하고 당신이 그것을 사용하는 경우, 대신 name 속성을 읽을 수 jQuery를 업데이트하는 것이 좋습니다 것, 빈 세트 []을 반환

inputs.filter(function() { 
    return this.name === "skus[0].skuattributeoptions[1].sao_option_id"; 
}); 

http://jsfiddle.net/zVUNm/

편집 : 대신 따옴표를 사용하는 [, ]. 문자를 이스케이프 경우 그리고 그것은 또한 jQuery를 1.5.1의 01에 버그가있는 것 같습니다 작동방법 :

inputs.filter('[name=skus\\[0\\]\\.skuattributeoptions\\[1\\]\\.sao_option_id]'); 

http://jsfiddle.net/tE4et/

글쎄, 그 버전이 2011 년 2 월 발표했던 옛 하나이며,이 문제는 최신 버전에 존재하지 않습니다.

+0

좋은 답변입니다. 나는 []을 벗어나려고했으나 도트가 도피해야한다는 것을 깨닫지 못했습니다. –

0

jQuery를 1.5.1 이후 수정이 있었다 매우 오래된. 귀하의 문제는 jQuery 1.5.1과 IE 사이에있는 것 같습니다. 대신 jQuery 1.10.1을 사용해야합니다. 맞습니다