2012-12-30 1 views
7

일반적으로 선택기가 모든 곳에서 작성되는 것을 피하기 위해 변수에 내 jQuery 객체를 저장합니다.DOM 변경 후 변수에 저장된 jQuery 객체를 업데이트하는 방법은 무엇입니까?

DOM을 변경할 때 개체 자체를 업데이트하려고합니다. 사용하지 않는 참조를 삭제하고 새 참조로 업데이트하기. 어떻게해야합니까? 이상적으로는 다음과 같은 논리로 뭔가를하고 싶지 :

(function ($) { 
    $.fn.update = function(){ 
    var newElements = $(this.selector),i;  
    for(i=0;i<newElements.length;i++){ 
     this[i] = newElements[i]; 
    } 
    for(;i<this.length;i++){ 
     this[i] = undefined; 
    } 
    this.length = newElements.length; 
    return this; 
    }; 
})(jQuery); 

그냥 코드에 추가 할 :

var test = $('div.bar'); 
console.log(test); 
>> [<div class="bar" id="b1"></div>, <div class="bar" id="b2"></div>] 

$('#b2').remove(); 
console.log(test); 
>> [<div class="bar" id="b1"></div>, <div class="bar" id="b2"></div>] 

test.update(); 
console.log(test); 
>> [<div class="bar" id="b1"></div>] 

$('body').append('<div class="bar" id="b3"></div>'); 
console.log(test); 
>> [<div class="bar" id="b1"></div>] 

test.update(); 
console.log(test); 
>> [<div class="bar" id="b1"></div>, <div class="bar" id="b3"></div>] 

답변

7

This plugin는 그 문제 해결 투표를 내려 그에게

var $foo = $("div.bar"); // selects all "div.bar" 
(... many dom modifications ...) 
$foo.update(); 
+2

을 할 수 누구나 이것이 왜 객체를 업데이트하는 나쁜 방법이라고 설명합니까? 아니면 당신이 유용하다고 생각하지 않는 것을 나눠주고 있기 때문에 투표를하는 것입니까? (Q & A 스타일에서 유용한 정보를 공유하는 것이 stackexchange에 의해 권장됩니다.) – fmsf

+3

원본 질문이나 답변에 대한 downvotes를 이해하지 못합니다. 코멘트가없는 Downvotes는 짜증. –

+2

좋은 질문이고 아무에게도 해를 끼치 지 않습니다. 나는 당신이'return $ (this.selector)'만 필요로한다고 생각한다. – undefined

관련 문제