2012-02-29 2 views
2

가능한 중복 :
jQuery attribute selector for multiple valuesjQuery/JavaScript 선택기 OR ||

나는이

$('input:radio[name=foo]').change(function() { 
    blah(); 
}); 

$('input:radio[name=bar]').change(function() { 
    blah(); 
}); 

내가 이런 일을 할 수 있나요?

$('input:radio[name=foo||bar]').change(function() { 
    blah(); 
}); 

만약 내가 다른 것을 가지고 있다면? 이 내 클래스를 오버라이드 (override)하는 HTML을 생성하는 사용자 정의 프레임 워크 (안 광산)와 같이

$('input:radio[name=foo||bar||foobar]').change(function() { 
    blah(); 
}); 

내가 이상적 일 것이다 클래스를 사용할 수 없습니다. 또한 id 선택기가 없습니다. 이름 속성 만 사용할 수 있습니다. 나는 분리 된 기능을 수행하는 데 어려움을 겪고 있지만이 질문에 대한 답을 누군가가이 상자 밖에서 생각할 수 있는지 궁금해하고 싶다.

참고 :이 프로젝트는 jQuery 1.3.2를 사용하며 아직 업그레이드 할 수 없습니다. 그리고 당신이 말하기 전에, 예, 당신과 함께 업그레이 드하는 중입니다 ...

답변

12

에는 '또는'문자 없지만, 여러 선택기를 사용할 수 있습니다 : 당신이 대신 selector group를 사용하므로, A는 "이들의 일치"제공

CSS3도 jQuery를 어느 쉼표로 :

$('input:radio[name=foo], input:radio[name=bar]').change(function() { 
    blah(); 
}); 

더 나은 방법은 클래스 선택기를 사용하는 것입니다.

+1

jsfiddle 함께 플레이! 뭔가 새로운 것을 배웠습니다 –

+0

+1 당신도 그 일을 할 수 있는지 몰랐습니다. 좋은 대답. –

1

jQuery의 $() 함수는 CSS 선택자 (거의 모두 CSS3its own 몇 개 사용)를 사용합니다. 구문은 JavaScript의 논리 연산자와 아무런 관련이 없습니다. - 당신은 단지 그들을 분리

$('input:radio[name=foo], input:radio[name=bar], input:radio[name=foobar]').change(function() { 
    blah(); 
}); 
2

or에 대한 간단한 선택자가 [attr] 선택자 안에 없습니다.

$('input:radio[name=foo], input:radio[name=bar]').change(...); 

을 또는 당신의 선택 이상으로 발생하는 경우, 당신은 $.fn.filter를 사용할 수 있습니다 : 당신은 당신의 선택을 구분합니다 comma (,)을 사용할 수 있습니다

$('#foo #bar #baz .fizz .buzz input:radio').filter('[name=foo], [name=bar]').change(...); 

을 내가 jQuery selectors의 전체 목록을 검토하는 것이 좋습니다.

1

귀하의 제안 솔루션의 jQuery 최신 버전에 대한 작업을하는 것처럼 뭔가를 할 수 있습니다. 그래도 필터를 쿼리에 연결할 수는 있지만 ...

$('input:radio').filter("[name=foo],[name=bar]").change(function() { 
    blah(); 
}); 

보기 나는 당신이 할 수 콤마로 구분, 감사를 모르는 여기 http://jsfiddle.net/NAgv5/1/