2011-01-27 4 views
1

분명히 jQuery 선택기를 두 번 이상 사용하면 변수에 jQuery 선택기를 저장하는 것이 좋습니다 (이 아닌 경우 한 번만 사용하면 좋은 생각입니다).javascript 변수에 여러 jQuery 선택기를 저장하려면 어떻게해야합니까?

제 질문은 변수에서 상호 교환하여 사용되는 여러 선택기를 저장하는 방법입니다.

예를 들어 $('#object1, #object2)을 선택한 다음 나중에 $ ('# object1')을 선택한다고 가정 해 보겠습니다. 여러 변수를 조합하여 여러 선택기를 만들 수있는 변수를 어떻게 만들 수 있습니까?

것은 나는이처럼 쓸 수 있다면 : 난 단지 문자열 #object1, 그리고 실제 선택을 참조 할 것

var object1 = "#object1"; 
var object2 = "#object2"; 

$(object1 + "," + object2); 

.

그렇다면 여러 선택기를 변수에 저장하면 어떻게 교환 할 수 있습니까?

+0

그 코드에 무슨 문제가 있습니까? 나는 그것이 잘 될 것이라고 생각한다. – kprevas

+0

그것은 실제 선택자가 아니라 var로 단지 문자열을 저장하고 있습니다. – Jared

+2

정확히 말하면, 선택자 *는 문자열이고, 당신이 말하는 것은 jQuery 객체입니다. –

답변

8

문제는 selector string이 아니며, 문제는 DOM 요소의입니다. "문제"는 비싸다는 것을 의미합니다. 그래서 요소를 한 번만 쿼리하고 참조를 저장해야합니다.

var object1 = $('#object1'), 
    object2 = $('#object2'); 

object1.some_method(); 

갱신 의견을 참조에서

:

jQuery를 jQuery를 객체 CONCAT 수있는 .add()help 방법 제공 : 완전히 확인

object1.add(object2).method(); 
+0

그렇게하기는 쉽지만,'some_method();'를'# object1'과'# object2'에 어떻게 적용할까요? – Jared

+0

업데이트 해 주셔서 감사합니다. 누락 된 부분입니다. – Jared

3

하지 I 무슨 뜻인지 이해해. jQuery 객체를 저장하여 어떤 종류의 캐시처럼 지속적으로 검색 할 필요가 없도록하고 싶습니까?

var cache = new Object(); 
cache['#object1'] = $('#object1'); 
cache['#object2'] = $('#object2'); 

jQuery 값을 검색하려면 cache['#object1']으로 전화하면됩니다.

+1

Object 리터럴 인'{}'을 사용하여 Object의 새 인스턴스를 만드는 대신 개체를 초기화하는 것이 좋습니다. 예 : 'var cache = {};'. 이것은 더 빨리 실행되고 몇 바이트를 절약합니다. –

+0

생각은 같았습니다. 팁 고마워. – Neil

1

당신은 .add()를 사용할 수 있습니다

var object1 = $('#object1'), object2 = $('#object2'); 

object1.add(object2).addClass('couple'); 

또는

var multiple = [object1[0], object2[0], ...]; 

$(multiple).addClass('party'); 
0

선택기는 $() FN에 전달 될 때 문자열입니다. 선택기와 일치하는 요소의 컬렉션을 반환합니다. 따라서이 코드에는 아무런 문제가 없습니다. 내 코드로도 쓸 수

,

var object1 = "#object1", 
    object2 = "#object2"; 

$(object1).add(object2).doSomething(); 

또는 더욱 최적화로 될 수 doSomething가 jQuery를 jQuery와 플러그인 정의 방법 일 수

var object1 = $('#object1'), 
    object2 = $('#object2'); 

object1.add(object2).doSomething(); 

.

0

쉬운 방법을 사용하지 않는 이유는 무엇입니까?

var severalVar = 'h1,h2,h3,h4,h5,h6'; 
$(severalVar).hide() 
관련 문제