2012-12-30 13 views
7

मैं सामान्य रूप से सभी जगहों पर लिखे गए चयनकर्ता से बचने के लिए चर में मेरी jQuery वस्तुओं को संग्रहीत करता हूं।DOM परिवर्तन के बाद एक चर में संग्रहीत एक jQuery ऑब्जेक्ट को कैसे अपडेट करें?

जब मैं डोम बदलता हूं, तो मैं ऑब्जेक्ट अपडेट स्वयं करना चाहता हूं। अप्रयुक्त संदर्भों को छोड़ना और नए लोगों के साथ अपडेट करना। मैं यह कैसे कर सकता हूँ? आदर्श रूप में मैं निम्नलिखित तर्क के साथ कुछ करना चाहता हूँ:

(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

लोगों के लिए मतदान कर सकते हैं नीचे कोई भी बताता है कि ऑब्जेक्ट को अपडेट करने का यह एक बुरा तरीका क्यों है? या क्या मैं बस मतदान कर रहा हूं क्योंकि मैं कुछ साझा कर रहा हूं जिसे आप उपयोगी नहीं मानते हैं? (क्यू एंड ए शैली में उपयोगी सामग्री साझा करना नोट स्टैक्सएक्सचेंज द्वारा प्रोत्साहित किया जाता है) – fmsf

+3

मुझे डाउनवॉट्स नहीं, न तो मूल प्रश्न पर और न ही आपके उत्तर पर। टिप्पणियों के बिना Downvotes बेकार है। –

+2

यह एक अच्छा सवाल है और यह किसी को भी चोट नहीं पहुंचाता है। मुझे लगता है कि आपको केवल 'वापसी $ (this.selector)' की आवश्यकता है। – undefined

संबंधित मुद्दे