jQuery के मूल रूप को ढूंढें


219

मेरे पास यह html है

<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"]इसका हिस्सा है? (जब मैं सबमिट बटन पर क्लिक करता हूं, तो मैं फॉर्म का चयन करना चाहता हूं और उसमें कुछ क्षेत्रों को जोड़ना चाहता हूं)

जवाबों:


485

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

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

नाम से फ़िल्टर करने के बजाय, मैं यह करूंगा:

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

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

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

2
peterjwest का उत्तर इससे बेहतर है।
गागरिन

HTML5 में, एक नया 'फ़ॉर्म' गुण है जो आपको मूल रूप से बाहर तत्व रखने की अनुमति देता है। इसे पहले जांचा जाना चाहिए।
mcintyre321

56

आप सभी संदर्भों पर मौजूद फ़ॉर्म संदर्भ का उपयोग कर सकते हैं, यह .closest()क्रोम (IE8) में 5-10 गुना अधिक तेज़ है। IE6 और 7 पर भी काम करता है।

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

2
आप IE8 का उल्लेख करें। क्या यह संस्करण ६, 6, और ९ के लिए भी काम करता है?
सन्नी

1
यह बहुत बेहतर और तेज़ है जैसा कि @peterjwest ने उल्लेख किया है। IE6 मुझे लगता है। इनपुट तत्वों पर सुधार IE4 पर था, दुर्भाग्य से नेटस्केप देव पृष्ठ अब चला गया है ... और जो मोज़िला एक की जांच करेगा।
मैकीज acopaciński

closest()एक इनपुट फॉर्म का असाइनमेंट होने के बजाय यह बहुत सुरक्षित तरीका है : codepen.io/anon/pen/vNqEyg
Möhre

आपने अपने कोड को छोटा रखने के लिए संकेतन का उपयोग किया है, लेकिन इस उदाहरण में यह केवल उस वास्तविक कोड से विचलित होता है जिसे आप दिखाना चाहते हैं (विशेषकर आशुलिपि से अपरिचित लोगों के लिए)। मैं एक नियमित अगर () का उपयोग करने के पक्ष में होगा।
aeonOfTime

मैं कहूंगा कि उस समाधान के साथ बहुत अधिक अव्यवस्था है। यदि आप इसके साथ जाते हैं (मेरा समाधान नीचे - हाँ यह एक विज्ञापन है :)): stackoverflow.com/a/18921404/261332 , तो आपको उस तरह की जटिलताओं की आवश्यकता नहीं है, क्योंकि यह तब काम करेगा जब इसे माना जाता है और अन्यथा कुछ न करें।
userfuser

17

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

$('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

2

HTML5 ब्राउज़र के रूप में एक का उपयोग कर सकते हैं inputElement.form- विशेषता का मूल्य <form>उसी दस्तावेज़ में एक तत्व का एक आईडी होना चाहिए । MDN पर अधिक जानकारी ।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.