2010-05-23 3 views
0

작성이이 같은 질문 : https://stackoverflow.com/questions/2890620/jquery-running-a-function-in-a-context-and-adding-to-a-variableJQuery와 : 방법

는하지만 그 질문은 가난하게 제기되었다.

나는 이런 식으로 뭔가를 시도하고 다시 시도 :

나는 데이터가 하위 요소의 클래스의 형태에서 데이터를 잡고 싶은 요소의 무리가 있습니다.

<div id='container'> 
    <span class='a'></span> 
    <span class='b'></span> 
    <span class='c'></span> 
</div> 
<div id='container2'> 
    <span class='1'></span> 
    <span class='2'></span> 
    <span class='3'></span> 
</div> 

나는이 같은 방법 :이 같은 방법을 실행하는

jQuery.fn.grabData = function(expr) { 
    return this.each(function() { 
     var self = $(this);    
     self.find("span").each(function(){ 
      var info = $(this).attr('class'); 
      collection += info; 
     }); 
    }); 
}; 

:

var collection = ''; 
$('#container').grabData(); 
$('#container2').grabData(); 

있도록 컬렉션이 서로에 추가해야합니다 결국 I 얻으세요.

console.log(collection); 

:

abc123 

하지만 수집 방법은 정의되지 않았습니다. 메소드가 추가해야하는 콜렉션을 메소드에 알리려면 어떻게해야합니까?

감사합니다.

답변

2

당신이 전역 변수 필요합니다 grabData 함수를 호출 할 때마다 값을 축적하려는 경우 : 당신은 단지 grabData 기능의 단일 통화를하고 싶은 반면에 경우

var collection = ''; 
jQuery.fn.grabData = function(expr) { 
    return this.each(function() { 
     var self = $(this);    
     self.find('span').each(function() { 
      var info = $(this).attr('class'); 
      collection += info; 
     }); 
    }); 
}; 

당신 이 작업을 수행 할 수 있습니다 : 다음

jQuery.fn.grabData = function(expr) { 
    var collection = ''; 
    this.each(function() { 
     var self = $(this);    
     self.find('span').each(function() { 
      var info = $(this).attr('class'); 
      collection += info; 
     }); 
    }); 
    return collection; 
}; 

을 그리고 다음과 같이 사용 :

var collection = $('#container').grabData(); 
console.log(collection); 
+0

첫 번째 유형의 경우, 제 질문과 같은 것이 아닙니까? 그 오류 컬렉션을 정의하지 않습니다 제공합니다. – Mark

+0

정확히 일치하지는 않습니다. 'document.ready' 함수의'var collection = '''** outside **를 넣으십시오. 나는 당신이 플러그인을 사용하는 동안 당신의 내부에 넣는다고 생각합니다. –

+0

아아, 고마워. – Mark