क्या jQuery खीज मैं एक प्रोटोटाइप उपयोगकर्ता के रूप में के बारे में पता होना चाहिए?

वोट
6

हम प्रोटोटाइप से jQuery के लिए हमारी साइट स्विचन पर विचार कर रहे हैं। सभी के लिए भी परिचित प्रोटोटाइप के साथ होने के नाते, मैं प्रोटोटाइप के बारे में चीजें हैं जो मैं सीमित या कष्टप्रद से अच्छी तरह परिचित हूँ।

jQuery उपयोगकर्ताओं के लिए मेरे सवाल यह है: थोड़ी देर के लिए jQuery के साथ काम करने के बाद, आप निराशा क्या मिलता है? वहाँ jQuery के बारे में चीजें हैं जो स्विचिंग (पीछे) प्रोटोटाइप करने के लिए के बारे में आपको लगता है कर रहे हैं?

03/02/2009 को 19:31
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


8 जवाब

वोट
2

(केवल एक चीज मैं के बारे में सोच सकते हैं कि इस तत्व के बजाय एक jQuery वस्तु है $("...").each(function), के रूप में -calls $(element)अधिक बार फिर बस तत्व प्रयोग किया जाता है। और वह extremly मामूली बात सिर्फ इसके बारे में है।

ऊपर के उदाहरण (सरलीकृत और मुझे पता है कि अन्य बहुत बेहतर तरीके ऐसा करने के लिए, मैं अभी-अभी एक बेहतर उदाहरण के बारे में सोच नहीं सकता था हैं कि):

// Make all divs that has foo=bar pink.
$("div").each(function(){
  if($(this).attr("foo") == "bar"){
    $(this).css("background", "pink");
  }
});

eachएक समारोह है कि पैरामीटर के रूप में एक समारोह लेता है कि समारोह में एक बार प्रत्येक मिलान तत्व के लिए कहा जाता है, है। समारोह को पारित कर दिया है, thisवास्तविक ब्राउज़र डोम तत्व को संदर्भित करता है, लेकिन मुझे लगता है कि आप अक्सर प्रत्येक तत्व पर कुछ jQuery समारोह का उपयोग करना चाहते, इस प्रकार का उपयोग किए $(this)। यह क्या करने के लिए निर्धारित किया गया था, तो $(this)है, तो आप कम कोड प्राप्त करना चाहते हैं, और आप अभी भी का उपयोग कर डोम तत्व वस्तु का उपयोग कर सकता है this.get(0)। अब मैं चीजों को होने के रूप में वे कर रहे हैं, अर्थात् है कि लिखने के लिए कारण देखने के $(this)बजाय इस बात का शायद ही है कि बोझिल है, और मामले में आप क्या कर सकते आप डोम तत्व के साथ क्या करना चाहते हैं जिस तरह से यह है जिस तरह से यह कर सकता है की तुलना में तेजी है किया गया है, और दूसरी तरह के तेजी से मामला आप चाहते हैं में नहीं होगा $(this)।)

03/02/2009 को 19:35
का स्रोत उपयोगकर्ता

वोट
6

मुझे लगता है कि केवल कि मुझे हो जाता है मुझे याद है कि यह तत्व की एक सरणी देता है, भले ही मैं जानता हूँ कि वहाँ केवल एक ही है कि जब मैं एक भी तत्व के लिए एक चयन क्वेरी करना है। जब तक आप jQuery तरीकों के माध्यम से तत्व के साथ के बजाय सीधे बातचीत करने के लिए चाहते हैं आम तौर पर, यह कोई फर्क नहीं पड़ता।

03/02/2009 को 19:36
का स्रोत उपयोगकर्ता

वोट
1

नहीं। नाडा। Nyet।

03/02/2009 को 19:37
का स्रोत उपयोगकर्ता

वोट
2

मेरे दो दर्द अंक कर सकते हैं ब्रैकेट नरक किया गया है, बहुत भ्रमित मिल

$('.myDiv').append($('<ul />').append($('<li />').text('content')));

मेरे अन्य आम मुद्दा मैं हमेशा पिछले अल्पविराम याद आती है jQuery में JSON के उपयोग से संबंधित है,

$('.myDiv').tabs({ option1:true, options2:false(, woops)});

अंत में, मैं अब के बारे में 6 महीने के लिए jQuery का उपयोग कर रहे हैं और मुझे नहीं लगता कि मैं कभी भी प्रोटोटाइप के लिए वापस जाने करेंगे। मैं बिल्कुल jQuery प्यार करता हूँ, और वे का उपयोग चाल का एक बहुत मुझे बहुत कुछ सीखने में मदद मिली है। एक शांत चाल है जो मुझे पसंद विधि कॉल के लिए स्ट्रिंग शाब्दिक उपयोग कर रहा है, मैं वास्तव में कभी नहीं प्रोटोटाइप के साथ बहुत ज्यादा है कि किया था।

$('.myDiv')[(add ? 'add' : 'remove') + 'Class']('redText');
03/02/2009 को 19:40
का स्रोत उपयोगकर्ता

वोट
3

शायद ही असली मुद्दा मैंने कभी में भाग लिया है $ (this) गुंजाइश की समस्या है। उदाहरण के लिए, यदि आप तत्वों और उप तत्वों से अधिक पाश के लिए एक नेस्टेड कर रहे हैं JQuery चाहते प्रत्येक में बनाया () फ़ंक्शन का उपयोग कर, क्या $ (this) का उल्लेख करता है? उस मामले में यह, भीतरी सबसे गुंजाइश को संदर्भित करता है के रूप में यह होना चाहिए, लेकिन इसकी हमेशा की उम्मीद नहीं।

सरल समाधान सिर्फ एक श्रृंखला में आगे ड्रिलिंग से पहले एक चर करने के लिए $ (this) कैश करने के लिए है:

$("li").each(function() {
    // cache this
    var list_item = $(this);
    // get all child a tags
    list_item.find("a").each(function() {
        // scope of this now relates to a tags
        $(this).hide("slow");
    });
});
03/02/2009 को 19:49
का स्रोत उपयोगकर्ता

वोट
-1

।से प्रत्येक:

jQuery (भले ही आप इसे उपयोग नहीं कर रहे आप, सूचकांक की जरूरत है):

$.each(collection, function(index, item) {
  item.hide();
});

प्रोटोटाइप (आप आमतौर पर आइटम का उपयोग कर रहे हैं, ताकि आप सूचकांक को छोड़ सकते हैं):

collection.each(function(item) {
  item.hide();
});
03/02/2009 को 19:52
का स्रोत उपयोगकर्ता

वोट
-1

यह वास्तव में केवल एक झुंझलाहट अगर आप डोम हेरफेर का एक बहुत कर रहे हैं। PrototypeJs स्वचालित रूप से डोम तत्वों के लिए अपने एपीआई कहते हैं, तो यह (jQuery निश्चित रूप से ऐसा नहीं करती है) prototypejs में काम करता है:

var el = document.createElement("div");
el.addClassName("hello"); // addClassName is a prototypejs method implemented on the native HTMLElement

यहां तक ​​कि $ () फ़ंक्शन के माध्यम से देशी तत्व चलने के बिना।

पुनश्च: नोट करना चाहिए कि इस IE में काम नहीं करता।

03/02/2009 को 20:10
का स्रोत उपयोगकर्ता

वोट
2

मुझे नहीं लगता कि किसी भी असली gotchas, या यहाँ तक कि किसी भी सुस्त खीज देखते हैं है। यहाँ अन्य उत्तर यह पुष्टि करने के लिए लगता है - मुद्दों बस थोड़ा अलग एपीआई और विभिन्न जावास्क्रिप्ट शैली है कि jQuery को प्रोत्साहित करती है कोडिंग के कारण होता है।

मैं कुछ साल पहले प्रोटोटाइप का उपयोग शुरू किया है और यह एक रहस्योद्घाटन पाया। इतना शक्तिशाली है, तो सुरुचिपूर्ण। कुछ महीनों के बाद मैं jQuery बाहर करने की कोशिश की और पाया कि क्या सत्ता और शान वास्तव में कर रहे हैं। मैं किसी भी खीज याद नहीं है। अब मैं वापस प्रोटोटाइप का उपयोग कर एक परियोजना पर काम कर रहा हूँ और इसे वापस एक कदम की तरह लगता है (निष्पक्ष होना करने के लिए, हम प्रोटोटाइप 1.5.1 का उपयोग कर रहे हैं)।

आप सवाल उलट है - "क्या प्रोटोटाइप खीज मैं एक jQuery उपयोगकर्ता के रूप में के बारे में पता होना चाहिए" - आप एक बहुत अधिक जवाब मिलेगा।

03/02/2009 को 20:33
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more