2012-01-23 19 views
7

यह दोनों के लिए तैयार है और आकार बदलने पर एक ही कोड को चलाने के लिए काम करता है का उपयोग करते हुए एक ही समय में आकार परिवर्तन?बाइंड और jQuery .on()

+0

'ऑन'' बाइंड', 'लाइव' और 'प्रतिनिधि' के लिए एक प्रतिस्थापन है, लेकिन शॉर्टंड विधियों के लिए नहीं है। यदि आप जिज्ञासा से पूछते हैं, ठीक है, लेकिन आपको '.on' का उपयोग करने के लिए अपना कोड बदलना नहीं है। –

+0

@ फ़ेलिक्सक्लिंग मैं सबसे तेज़ तरीका समझना चाहता हूं। – ryanve

+0

@ फ़ेलिक्सक्लिंग और हाँ, यह भी उत्सुक है। – ryanve

उत्तर

13

on का उपयोग किसी अन्य घटना की तरह आकार बदलने और तैयार कार्यक्रमों को तारित करने के लिए किया जा सकता है।

तो आपके मामले के लिए, आप एक ऐसा फ़ंक्शन बना सकते हैं जिसमें कोड resize और ready के लिए हो, और फिर on पर दोनों कॉलों को पास कर दें।

आप अपने संलग्न गुंजाइश साफ रखना चाहते हैं, तो आप एक तत्काल क्रियान्वित समारोह में यह सब कर सकता है:

(function() { 
    function stuffForResizeAndReady(){ 
     // Stuff in here happens on ready and resize. 
    } 

    $(window).on("resize", stuffForResizeAndReady); 
    $(document).on("ready", stuffForResizeAndReady); 
})(); 

2012-07-25: 2 मतभेद का उपयोग करते समय के बारे में पता होना करने के लिए कर रहे हैं .on() तैयार संचालकों संलग्न करने के लिए:

  • तैयार संचालकों $(fn) और $(document).ready(fn) के माध्यम से शामिल रहे हैं "रेट्रो-निकाल दिया" जबकि .on() से जोड़ा वाले नहीं हैं। उन लोगों का उपयोग करना, यदि आप पहले से लोड होने के बाद एक हैंडलर जोड़ते हैं, तो एफएन तुरंत निकाल दिया जाएगा। यदि आप के माध्यम से के बाद एक हैंडलर जोड़ते हैं तो DOM लोड हो जाता है, तो यह नहीं jQuery द्वारा निकाल दिया जाएगा, लेकिन आप इसे मैन्युअल रूप से .trigger('ready') कर सकते हैं।

  • आप $(fn) या $(document).ready(fn) का उपयोग करते हैं एक तैयार हैंडलर जोड़ने के, fn अपने 1 आर्ग के रूप में jQuery प्राप्त करता है, परिचित jQuery(function($){ }) उपयोग की इजाजत दी। यदि आप $(document).on('ready', fn) का उपयोग करते हैं, तो पहला तर्क है कि एफएन प्राप्त करता है event object। दोनों मामलों में this एफएन के अंदर document है। यदि आप ट्रिगर करने के उद्देश्य से $('#foo').on('ready', fn) जैसे असामान्य कुछ करना चाहते थे, this#foo तत्व होगा।

+1

नाइस/जो इसे वास्तव में भी पठनीय बनाता है। – ryanve

+0

@ryanve - हाँ, आप जावास्क्रिप्ट –

+0

में बंद होने के साथ कुछ महान चीजें कर सकते हैं। मैं यह उत्तर चुनता हूं b/c यह प्रश्न के लिए विशिष्ट है और इसकी रीडब्बिलिटी के लिए है। @ जैस्पर का उत्तर भी ठोस है और स्थिति के आधार पर तेज़ हो सकता है। – ryanve

4

.ready(), .resize(), और दूसरों .mouseover() तरह .bind() समारोह (या .on() jQuery में 1.7+) का उपयोग कर के लिए सब सिर्फ शॉर्ट-कट कर रहे हैं। .resize(function() {}) मानचित्र .bind('resize', function() {}) पर।

$(document).on('ready', function() { 

    $(window).on('resize', function() { 

     // Stuff in here happens on ready and resize. 

    }).trigger('resize'); // Trigger resize handlers.  

});//ready 

यहाँ एक डेमो है: http://jsfiddle.net/qMBtP/

+0

'ट्रिगर ('आकार बदलें') का उपयोग करके' आकार बदलना() 'से तेज़ है। यह सबसे तेज़ तरीका हो सकता है। http://jsperf.com/bind-to-ready-and-resize-1 – ryanve

0

यह दोनों लोड बाइंड और नीचे के रूप में घटना का आकार बदलने: यहाँ अपने कोड .on() का उपयोग कर जहां भी संभव तरह दिखाई देंगे है

$(window).on('load resize', function() { 
// your code 
}); 

बहुत सरल - उम्मीद है की यह मदद करेगा।

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