यदि मेरे पास स्टार्टअप पर बहुत सारे कार्य हैं, तो क्या वे सभी एक से कम में होंगे:
$(document).ready(function() {
या मेरे पास कई ऐसे बयान हो सकते हैं?
यदि मेरे पास स्टार्टअप पर बहुत सारे कार्य हैं, तो क्या वे सभी एक से कम में होंगे:
$(document).ready(function() {
या मेरे पास कई ऐसे बयान हो सकते हैं?
जवाबों:
आपके पास कई हो सकते हैं, लेकिन यह हमेशा सबसे साफ काम नहीं है। उन्हें अति प्रयोग न करने की कोशिश करें, क्योंकि यह पठनीयता को गंभीरता से प्रभावित करेगा। इसके अलावा, यह पूरी तरह से कानूनी है। नीचे देखें:
http://www.learningjquery.com/2006/09/multiple-document-ready
इसे आज़माएं:
$(document).ready(function() {
alert('Hello Tom!');
});
$(document).ready(function() {
alert('Hello Jeff!');
});
$(document).ready(function() {
alert('Hello Dexter!');
});
आप पाएंगे कि यह इसके बराबर है, निष्पादन के आदेश पर ध्यान दें:
$(document).ready(function() {
alert('Hello Tom!');
alert('Hello Jeff!');
alert('Hello Dexter!');
});
यह भी ध्यान देने योग्य है कि एक $(document).readyब्लॉक के भीतर परिभाषित एक फ़ंक्शन को दूसरे $(document).readyब्लॉक से नहीं बुलाया जा सकता है , मैंने सिर्फ यह परीक्षण किया है:
$(document).ready(function() {
alert('hello1');
function saySomething() {
alert('something');
}
saySomething();
});
$(document).ready(function() {
alert('hello2');
saySomething();
});
आउटपुट था:
hello1
something
hello2
आप कई का उपयोग कर सकते हैं। लेकिन आप एक दस्तावेज़ के अंदर भी कई कार्यों का उपयोग कर सकते हैं।
$(document).ready(function() {
// Jquery
$('.hide').hide();
$('.test').each(function() {
$(this).fadeIn();
});
// Reqular JS
function test(word) {
alert(word);
}
test('hello!');
});
हां , कई डॉलर (दस्तावेज़) पहले से ही () कॉल करना संभव है। हालाँकि, मुझे नहीं लगता कि आप जान सकते हैं कि उन्हें किस तरीके से अंजाम दिया जाएगा। (स्रोत)
Ready handlers bound this way are executed after any bound by the other three methods above.
हाँ यह संभव है लेकिन आप एक div #mydiv का उपयोग कर सकते हैं और दोनों का उपयोग कर सकते हैं
$(document).ready(function(){});
//and
$("#mydiv").ready(function(){});
हाँ, यह पूरी तरह से ठीक है। लेकिन बिना किसी कारण के इसे करने से बचें। उदाहरण के लिए मैंने इसका उपयोग वैश्विक पृष्ठों के नियमों की घोषणा करने के लिए इंडिविजुअल पेजों की तुलना में किया था जब मेरी जावास्क्रिप्ट फ़ाइलों को गतिशील रूप से उत्पन्न किया गया था, लेकिन अगर आप इसे केवल और फिर से करते रहेंगे तो इसे पढ़ना मुश्किल हो जाएगा।
इसके अलावा, आप किसी अन्य jQuery(function(){});कॉल से कुछ तरीकों का उपयोग नहीं कर सकते हैं,
इसलिए एक और कारण है कि आप ऐसा नहीं करना चाहते हैं।
पुराने के साथ window.onloadहालांकि आप पुराने को बदल देंगे हर बार जब आप एक फ़ंक्शन निर्दिष्ट करते हैं।
हाँ तुम कर सकते हो।
एकाधिक दस्तावेज़ तैयार अनुभाग विशेष रूप से उपयोगी होते हैं यदि आपके पास उसी पृष्ठ पर उपयोग करने वाले अन्य मॉड्यूल हैं जो इसका उपयोग करते हैं। पुरानी window.onload=funcघोषणा के साथ, हर बार जब आप किसी फ़ंक्शन को कॉल करने के लिए निर्दिष्ट करते हैं, तो उसने पुराने को बदल दिया।
अब निर्दिष्ट सभी कार्य कतारबद्ध / स्टैक्ड हैं (क्या कोई पुष्टि कर सकता है?) इस बात की परवाह किए बिना कि वे किस तैयार अनुभाग में निर्दिष्ट हैं।
मुझे लगता है कि जाने का बेहतर तरीका नामित कार्यों पर स्विच करना है (उस विषय पर अधिक के लिए इस अतिप्रवाह की जांच करें) । इस तरह आप उन्हें एक ही घटना से बुला सकते हैं।
इस तरह:
function firstFunction() {
console.log("first");
}
function secondFunction() {
console.log("second");
}
function thirdFunction() {
console.log("third");
}
इस तरह आप उन्हें एक ही तैयार फ़ंक्शन में लोड कर सकते हैं।
jQuery(document).on('ready', function(){
firstFunction();
secondFunction();
thirdFunction();
});
यह आपके कंसोल.लॉग को निम्न आउटपुट देगा:
first
second
third
इस तरह आप अन्य घटनाओं के लिए फ़ंक्शंस का पुन: उपयोग कर सकते हैं।
jQuery(window).on('resize',function(){
secondFunction();
});
यह कानूनी है, लेकिन कभी-कभी यह अवांछित व्यवहार का कारण बनता है। एक उदाहरण के रूप में मैंने मैजिकसुगेस्ट लाइब्रेरी का उपयोग किया और अपने प्रोजेक्ट के एक पेज में दो मैजिकसुगेस्ट इनपुट जोड़े और इनपुट्स के प्रत्येक इनिशियलाइज़ेशन के लिए अलग डॉक्यूमेंट रेडी फ़ंक्शंस का उपयोग किया। बहुत पहले इनपुट आरंभीकरण ने काम किया, लेकिन दूसरा नहीं और कोई त्रुटि नहीं दे रहा था, दूसरा इनपुट दिखाई नहीं दिया। इसलिए, मैं हमेशा एक दस्तावेज़ तैयार फ़ंक्शन का उपयोग करने की सलाह देता हूं।
तुम भी HTML फ़ाइलों के अंदर दस्तावेज़ तैयार कार्यों घोंसला कर सकते हैं। यहाँ jquery का उपयोग करके एक उदाहरण दिया गया है:
फ़ाइल: test_main.html
<!DOCTYPE html>
<html lang="en">
<head>
<script src="jquery-1.10.2.min.js"></script>
</head>
<body>
<div id="main-container">
<h1>test_main.html</h1>
</div>
<script>
$(document).ready( function()
{
console.log( 'test_main.html READY' );
$("#main-container").load("test_embed.html");
} );
</script>
</body>
</html>
फ़ाइल: test_embed.html
<h1>test_embed.html</h1>
<script>
$(document).ready( function()
{
console.log( 'test_embed.html READY' );
} );
</script>
कंसोल आउटपुट:
test_main.html READY test_main.html:15
test_embed.html READY (program):4
ब्राउज़र दिखाता है:
test_embed.html
आप इसे निम्न तरीके से भी कर सकते हैं:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#hide").click(function(){
$("#test").hide();
});
$("#show").click(function(){
$("#test").show();
});
});
</script>
</head>
<body>
<h2>This is a test of jQuery!</h2>
<p id="test">This is a hidden paragraph.</p>
<button id="hide">Click me to hide</button>
<button id="show">Click me to show</button>
</body>
पिछले उत्तरों ने पहले से ही ब्लॉक के बाहर एक और नामित फ़ंक्शन के साथ, एक। डेड ब्लॉक के अंदर कई नामित फ़ंक्शन का उपयोग करके या पहले से ही ब्लॉक में एक एकल अनाम फ़ंक्शन का उपयोग करके दिखाया। मुझे यह सवाल शोध करते समय लगा कि अगर पहले से ही ब्लॉक के अंदर कई अनाम कार्यों को करने का कोई तरीका है - तो मुझे सिंटैक्स सही नहीं मिल सकता है। मैंने आखिरकार इसका पता लगा लिया, और आशा व्यक्त की कि अपने परीक्षण कोड को पोस्ट करके मैं दूसरों को उसी प्रश्न के उत्तर की तलाश में मदद करूँगा जो उनके पास था