2009-10-25 9 views
189

लगता है मैं इस एचटीएमएल हैjQuery माता पिता प्रपत्र

<ul> 
    <li><form action="#" name="formName"></li> 
    <li><input type="text" name="someName" /></li> 
    <li><input type="text" name="someOtherName" /></li> 
    <li><input type="submit" name="submitButton" value="send"></li> 
    <li></form></li> 
</ul> 

मैं प्रपत्र कैसे चुन सकता हूँ कि input[name="submitButton"] का हिस्सा है? (जब मैं प्रस्तुत बटन पर क्लिक करें मैं प्रपत्र का चयन करें और उस में कुछ क्षेत्रों संलग्न करना चाहते हैं)

उत्तर

437

मैं closest, जो निकटता से मेल खाने पेरेंट तत्व का चयन करता है का उपयोग करते हुए सुझाव है: छानने के बजाय

$('input[name="submitButton"]').closest("form"); 

नाम से, मैं इस करना होगा:

$('input[type=submit]').closest("form"); 
+0

धन्यवाद एक बहुत! मैं वास्तव में इसके साथ संघर्ष कर रहा था। –

+2

क्या हमें इंडेक्स द्वारा मिलना चाहिए? '$ ("इनपुट [प्रकार = प्रस्तुत]") सबसे करीब ("फ़ॉर्म");।' रूपों की एक सरणी देता है। – sergzach

+0

मैं उपर्युक्त इस तरह से उपयोग करने की कोशिश कर रहा हूं: $ ("। प्रत्येक img")। क्लिक करें (फ़ंक्शन() { $ (यह) .closest ("form")। दिखाएं(); }); लेकिन मुझे यह काम करने के लिए प्रतीत नहीं होता है। :/ – Alisso

52

आप सभी संदर्भों पर मौजूद फॉर्म संदर्भ का उपयोग कर सकते हैं, यह .closest() (क्रोम और आईई 8 में 5-10 गुना तेज) से बहुत तेज है। आईई 6 & 7 पर भी काम करता है।

var input = $('input[type=submit]'); 
var form = input.length > 0 ? $(input[0].form) : $(); 
+2

आप IE8 का उल्लेख करते हैं। क्या यह संस्करण 6, 7, और 9 के लिए भी काम करता है? – Sonny

+1

यह @Peterjwest उल्लेख के रूप में बहुत बेहतर और तेज़ है। आईई 6 मुझे लगता है। इनपुट तत्वों पर सुधार आईई 4 पर था, दुर्भाग्यवश नेटस्केप देव पेज अब चला गया है ... और जो मोज़िला को चेक करेगा। –

+0

'निकटतम()' का उपयोग करने के बजाय यह एक अधिक सुरक्षित तरीका है क्योंकि इनपुट में स्वयं का फॉर्म असाइनमेंट हो सकता है: http://codepen.io/anon/pen/vNqEyg –

12

मेरे लिए, यह सबसे सरल की तरह दिखता है/सबसे तेजी से:

$('form input[type=submit]').click(function() { // attach the listener to your button 
    var yourWantedObjectIsHere = $(this.form); // use the native JS object with `this` 
}); 
+2

मेरे लिए, '$ (this.form) 'का उपयोग करना सबसे अच्छा समाधान है – jap1968