2011-08-28 17 views
6

क्या पृष्ठ पर एक विशिष्ट तत्व मौजूद होने के बाद कॉलबैक को कॉल करने के लिए कोई ईवेंट या सरल फ़ंक्शन है। मैं यह नहीं पूछ रहा हूं कि कोई तत्व मौजूद है या नहीं।jQuery तत्व घटना मौजूद है

एक उदाहरण

$("#item").exists(function(){ }); 

के रूप में मैं तैयार घटना

$("#item").ready(function(){ }); 
+2

आप क्या करना चाहते हैं? –

+0

तैयार फ़ंक्शन इस तरह से @ ड्रेक में काम नहीं कर रहा है। उदाहरण के रूप में इस पहेली को देखें: http://jsfiddle.net/YDn5f/ –

उत्तर

1

का उपयोग कर .live समारोह पर एक नजर डालें समाप्त हो गया। यह चयनकर्ता में सभी मौजूदा और भविष्य के तत्वों पर निष्पादित करता है।

$ ('div')। लाइव (फ़ंक्शन() {});

3

LiveQuery jQuery प्लगइन ऐसा लगता है कि अधिकांश लोग इस समस्या को हल करने के लिए उपयोग कर रहे हैं।

लाइव क्वेरी बंधन घटनाओं या मिलान किया घटक ऑटो-जादुई के लिए कॉलबैक फायरिंग, के बाद भी पेज लोड किया गया है और डोम अद्यतन द्वारा jQuery चयनकर्ताओं की शक्ति का इस्तेमाल करता है।

यहां एक त्वरित jsfiddle है कि मैं एक साथ रखा इस प्रदर्शन करने के लिए है: http://jsfiddle.net/87WZ3/1/

यहाँ एक घटना हर बार एक div बनाई गई है फायरिंग और div कि सिर्फ बनाया गया था की विशिष्ट आईडी लिखने का एक डेमो है: http://jsfiddle.net/87WZ3/2/

+1

यह वही था जो मैं ढूंढ रहा था !!! THX – user357034

3

मैं इस एक ही समस्या हो रही थी, तो मैं आगे चला गया और इसके लिए एक प्लगइन लिखा है: https://gist.github.com/4200601

$(selector).waitUntilExists(function);

कोड:

(function ($) { 

/** 
* @function 
* @property {object} jQuery plugin which runs handler function once specified element is inserted into the DOM 
* @param {function} handler A function to execute at the time when the element is inserted 
* @param {bool} shouldRunHandlerOnce Optional: if true, handler is unbound after its first invocation 
* @example $(selector).waitUntilExists(function); 
*/ 

$.fn.waitUntilExists = function (handler, shouldRunHandlerOnce, isChild) { 
    var found  = 'found'; 
    var $this  = $(this.selector); 
    var $elements = $this.not(function() { return $(this).data(found); }).each(handler).data(found, true); 

    if (!isChild) 
    { 
     (window.waitUntilExists_Intervals = window.waitUntilExists_Intervals || {})[this.selector] = 
      window.setInterval(function() { $this.waitUntilExists(handler, shouldRunHandlerOnce, true); }, 500) 
     ; 
    } 
    else if (shouldRunHandlerOnce && $elements.length) 
    { 
     window.clearInterval(window.waitUntilExists_Intervals[this.selector]); 
    } 

    return $this; 
} 

}(jQuery)); 
+0

यह बहुत अच्छा काम करता है - धन्यवाद रयान! – Michael

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