2012-10-01 18 views
97

में अक्षम jQuery उपयोग चेतावनियां मैंने हाल ही में PHPStorm IDE के अपने संस्करण को अपग्रेड किया है और अब यह मुझे अक्षम jQuery उपयोग के बारे में चेतावनी देता है।PHPStorm IDE

उदाहरण के लिए:

चेकों कि jQuery चयनकर्ताओं एक कुशल तरीके से उपयोग किया जाता है:

var property_single_location = $("#property [data-role='content'] .container"); 

यह चेतावनी संकेत देता है। यह को अनुक्रमित चयनकर्ताओं को विभाजित करने के लिए सुझाव देता है जो आईडी चयनकर्ता से पहले हैं और डुप्लीकेट चयनकर्ताओं के बारे में चेतावनी देता है जिन्हें कैश किया जा सकता है।

तो मेरे सवाल है:

क्यों अक्षम है और क्या इसके बाद के संस्करण चयनकर्ता करने के लिए कारगर तरीका है?

मुझे लगता है कि होता है:

var property_single_location = $("#property").find("[data-role='content']").find(".container"); 

यह सही तरीका है?

उत्तर

151

मेरे पास आज भी यही प्रश्न था और Scott Kosmanhere पर समाधान ढूंढने में सक्षम था।

मूल रूप से उत्तर अलग-अलग आईडी का चयन करना है और फिर नीचे दिए गए किसी भी चीज़ के लिए .find(...) का उपयोग करना है। तो अपने उदाहरण ले रही है:

$("#property [data-role='content'] .container"); 

इस लिए यह बदल रहा है PhpStorm खुश करता है और जाहिर है हो सकता है more than twice as fast:

$("#property").find("[data-role='content'] .container"); 
+1

मेरे स्वाद के लिए $ ('[डेटा-भूमिका = "सामग्री"]। कंटेनर', '#property'); अधिक पठनीय है। – n3rd

+25

@ n3rd मजेदार, मुझे वह दृष्टिकोण बिल्कुल पठनीय नहीं लगता है, लेकिन प्रत्येक के लिए वे कहते हैं। – MikeSchinkel

+2

ठीक है, लेकिन क्यों? कक्षा चयनकर्ता का उपयोग करते समय IntelliJ एक चेतावनी नहीं दिखाता है .. –

19

मैं दो तरीकों के बीच अंतर का मानना ​​है कि जब jQuery के हाल के संस्करणों और ब्राउज़र का उपयोग नगण्य है । मैं एक परीक्षण से पता चलता है कि यह अब है वास्तव में 10% तेजी से नहीं बल्कि उसकी पहचान पर चयन की तुलना में एक संयुक्त चयनकर्ता और फिर एक बहुत ही सरल मामले के लिए खोजने के लिए का निर्माण:

http://jsperf.com/jquery-find-vs-insel

में कक्षा एक से अधिक बच्चों के चयन के लिए किसी भी गहराई, तेजी से प्रतीत होता है "खोज":

http://jsperf.com/jquery-find-vs-insel/7

jQuery मंचों पर इस बारे में कुछ चर्चा हुई थी, लेकिन इसके 3 वर्ष: https://forum.jquery.com/topic/which-jquery-selection-is-efficient वे यहाँ का कहना है, यदि आप कर रहे हैं के रूप मेंएक ही आईडी चयनकर्ता पर बहुत से संचालन कर रहे हैं, शीर्ष स्तर तत्व को कैश करके सबसे बड़ा प्रदर्शन सुधार मिलता है। दूसरी तरफ यदि आप कुछ चयन कर रहे हैं, तो वास्तव में कोई प्रदर्शन अंतर नहीं होगा।

क्योंकि मुझे विश्वास है कि इंटेलिजे इस कोड शैली के महत्व को बढ़ा रहा है।

+4

आपके पहले परीक्षण में, आप प्रत्यक्ष देवता का चयन कर रहे हैं ">"। मैंने ">" के बिना अपना पहला परीक्षण चलाया, और "ढूंढें" का उपयोग तेजी से किया गया है। http://jsperf.com/jquery-find-vs-insel/12 – beardedlinuxgeek

+0

मुझे यह सबसे दिलचस्प बात यह है कि सफारी के नवीनतम संस्करण सीधे विधि को लगभग 25% तक संसाधित करते हैं। मुझे नहीं पता कि उन्होंने क्या किया है, लेकिन जाहिर है कि अन्य सभी ब्राउज़रों ने पकड़ा नहीं है। – Uxonith

13

पहला सवाल Alt + Enter को हिट करना है, और सूची में पहली युक्ति का चयन करें, फिर एंटर दबाएं, आप देखेंगे कि यह सबसे प्रभावी तरीका क्या सोचता है।