हर्नमोबाइल के उत्कृष्ट उत्तर में जोड़ने के लिए; bindReady()
को देखते हुए, जो आंतरिक कॉल कि jQuery दस्तावेज़ लोड घटना के लिए हर बार जब आप $(some_function)
या $(document).ready(some_function)
फोन हम देखते हैं कि हम क्यों "ready"
करने के लिए बाध्य नहीं कर सकते बाध्य करने के लिए बनाता है:
bindReady: function() {
if (readyBound) {
return;
}
readyBound = true;
// Catch cases where $(document).ready() is called after the
// browser event has already occurred.
if (document.readyState === "complete") {
return jQuery.ready();
}
// Mozilla, Opera and webkit nightlies currently support this event
if (document.addEventListener) {
// Use the handy event callback
document.addEventListener("DOMContentLoaded", DOMContentLoaded, false);
// A fallback to window.onload, that will always work
window.addEventListener("load", jQuery.ready, false);
// If IE event model is used
} else if (document.attachEvent) {
// ensure firing before onload,
// maybe late but safe also for iframes
document.attachEvent("onreadystatechange", DOMContentLoaded);
// A fallback to window.onload, that will always work
window.attachEvent("onload", jQuery.ready);
// If IE and not a frame
// continually check to see if the document is ready
var toplevel = false;
try {
toplevel = window.frameElement == null;
} catch(e) { //and silently drop any errors
}
// If the document supports the scroll check and we're not in a frame:
if (document.documentElement.doScroll && toplevel) {
doScrollCheck();
}
}
}
यह कुल मिलाकर, $(some_function)
कॉल एक समारोह जो बांधता के लिए:
- DOMContentLoaded
- onreadystatechange (DOMContentLoaded)
- window.load/ऑनलोड
आपका सबसे अच्छा शर्त उन कार्यों कि नई .tooltipper
तत्वों बना सकता है, बल्कि (जो केवल एक बार होता) तैयार घटना के लिए सुनने के लिए कोशिश कर रहा से करने के लिए बाध्य होगा।
स्रोत
2010-07-07 16:01:51
यदि तत्व तैयार पर मौजूद है, तो '.live()' का उपयोग क्यों करें? मुझे लगता है कि आप शायद उस घटना को बांधने की कोशिश कर रहे हैं जो संभावित रूप से नए 'चयनकर्ता' बनाएगा। सीधे जवाब नहीं है लेकिन यह 'तैयार' पर '.live()' का उपयोग करने के लिए एक शॉटगन दृष्टिकोण की तरह लगता है। बस मेरा $ .02। – HurnsMobile
मुझे इस तरह से लगता है। कुछ तत्वों को हमेशा कुछ व्यवहार प्रदर्शित करना चाहिए। उदाहरण के लिए, क्लिक किए जाने पर 'href' विशेषता वाले लिंक हमेशा आपको URL पर ले जाना चाहिए। 'शीर्षक' विशेषता वाले अधिकांश तत्वों को पैरामीटर को माउस ओवर पर टूलटिप के रूप में प्रदर्शित करना चाहिए। कस्टम टूलटिपिंग जैसे उच्च-आदेश व्यवहारों के लिए इस प्रकार की कार्यक्षमता को सक्षम करने के लिए यह केवल मुझे समझ में आता है। –
मैं बस '$ ('टूलटिपर') का उपयोग कर समाप्त हुआ। Livequery (function() {$ (this) .tooltip()}) ', जो मुझे सबसे अर्थपूर्ण समझ बनाता है (जैसा कि अगले सबसे अच्छे समाधान के विपरीत है, जो कि टूलटिप तत्व बनाता है जो फ़ंक्शन में कॉलबैक जोड़ना है) जिसमें टूलटिप व्यवहार तत्व से जुड़ा हुआ है --- इसके द्वारा बनाई गई प्रक्रिया के साथ इसका कोई लेना-देना नहीं है। –