जावास्क्रिप्ट के इस स्निपेट jQuery के साथ और अधिक सरल बनाया जा सकता है?

वोट
2

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

सबसे अच्छा उदाहरण मैं Stackoverflow से आए हैं मिल गया है, तो मैं एक बार फिर से आते हैं, यह देखने के लिए कि यह कैसे पुनर्संशोधित सकता है और jQuery के साथ सुधार के कुछ; कोई विचार?

$$('em.green').each(function(em) { 
  em.up('button').onclick = function() { 
    em.update('Saving...') 
  }; 
});

धन्यवाद!

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


5 जवाब

वोट
3

यहाँ अपने प्रोटोटाइप कोड से लाइन अनुवाद द्वारा एक पंक्ति है। एक बहुत नहीं अलग:

$('em.green').each(function(i, em) {
    $(em).closest('button').click(function() { 
        $(em).html('Saving...') 
    })
});

IMO प्रोटोटाइप संस्करण बस के रूप में अच्छा नहीं तो अच्छे (बिना लग रहा है $हर जगह छिड़का)।

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

वोट
4

इस, थोड़ा कम का प्रयास करें:

$('button').click(function(i, button) { 
  $(button).closest('em.green').html('Saving...');
});

हर ईएम लूप करने के लिए होने से बचाता है और उसके बाद onclick बाँध। भी ताकि आप पृष्ठ पर हर बटन के लिए बाध्य नहीं कर रहे हैं, अगर वहाँ दूसरों रहे हैं बटन करने के लिए एक वर्ग को जोड़ने के लिए मदद कर सकता है।

17/03/2009 को 13:29
का स्रोत उपयोगकर्ता

वोट
2

यह एक छोटे से कम है और समझने के लिए आसान हो सकता है, लेकिन "em.green" चयनकर्ता डुप्लिकेट।

$('button:has(em.green)').click(function() {
    $(this).find('em.green').html('Saving...');
});

crescentfresh का जवाब भी अच्छा है, और उन्हें तत्व हर बार के लिए खोज की जरूरत नहीं है। प्रदर्शन प्रभाव हालांकि ध्यान देने योग्य नहीं होना चाहिए, के बाद से आप शायद बटन के तहत तत्वों का एक विशाल पेड़ नहीं है।

17/03/2009 को 14:45
का स्रोत उपयोगकर्ता

वोट
1

मैथ्यू Crumley का जवाब अच्छा है, लेकिन क्यों कई संचालकों देते हैं जब कोई एक कार्य होगा।

जोड़ा लाभ यह है कि यह भी अगर आप दस्तावेज़ के जीवन काल में बाद में किसी भी em.green तत्वों को बनाने के काम करेगा।

$('button:has(em.green)').live('click', function(){
  $(this).find('em.green').html('Saving...')
});
17/03/2009 को 15:03
का स्रोत उपयोगकर्ता

वोट
0

(मैं तो मैं एक नया उत्तर लेकिन बनाना होगा, संपादित नहीं कर सकते :)

थोड़ा कम:

$('button').click(function() { 
  $(this).closest('em.green').html('Saving...');
});

हर ईएम लूप करने के लिए होने से बचाता है और उसके बाद onclick बाँध। भी ताकि आप पृष्ठ पर हर बटन के लिए बाध्य नहीं कर रहे हैं, अगर वहाँ दूसरों रहे हैं बटन करने के लिए एक वर्ग को जोड़ने के लिए मदद कर सकता है।

यह फ़ंक्शन पैरामीटर शामिल करने के लिए संदर्भ आप के निकटतम माता पिता को खोजने के लिए चाहते हैं निर्दिष्ट करने के लिए इस चर का उपयोग अनावश्यक है।

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

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