HTML के निम्नलिखित ब्लॉक पर विचार करें:

<div class="wrapper">
    <select>
        <option></option>
        <option></option>
        <option></option>
    </select>
    <input type="text">
</div>
<div class="wrapper">
    <select>
        <option></option>
        <option></option>
        <option></option>
    </select>
    <input type="text">
</div>

वर्ग "आवरण" वाले divs में कई प्रकार के तत्व होते हैं (चयन, इनपुट, आदि ...) मुझे कुछ ऐसी चीज़ की आवश्यकता होती है जो इसके साथ शुरू होती है

$('.wrapper').each(function () { 
   // code that collects select, input data
});

यह डेटा को एक बहुआयामी सरणी (['चयन विकल्प', 'इनपुट डेटा']) में रखता है।

जैसा कि रोरी मैकक्रॉसन ने अपने स्वीकृत उत्तर में बताया, मेरा मतलब था कि मुझे वस्तुओं की एक सरणी की आवश्यकता है न कि बहुआयामी सरणी की।

1
Beeelze 27 नवम्बर 2015, 11:59

4 जवाब

सबसे बढ़िया उत्तर

आप :input चयनकर्ता का उपयोग कर सकते हैं:

var values = {};
$('.wrapper :input').each(function () { 
    values[$(this).prop('name')] = $(this).val();
});

: इनपुट
सभी इनपुट, टेक्सारिया, सिलेक्ट और बटन एलिमेंट्स का चयन करता है।

jQuery डॉक्स पर :input पर अधिक जानकारी


आपकी टिप्पणियों के आधार पर, आपको ऑब्जेक्ट की एक सरणी के रूप में डेटा की आवश्यकता है (ध्यान दें कि यह एक बहुआयामी सरणी के समान नहीं है)। इसे प्राप्त करने के लिए आपको दो छोरों की आवश्यकता होगी। एक .wrapper तत्वों को कवर करने के लिए, और दूसरा :input तत्वों को उनके भीतर खोजने के लिए। इसे इस्तेमाल करे:

var values = [];
$('.wrapper').each(function () { 
    var wrapperValues = {};
    $(this).find(':input').each(function() {
        wrapperValues[$(this).prop('name')] = $(this).val();
    });
    values.push(wrapperValues);
});
3
Rory McCrossan 27 नवम्बर 2015, 09:55

सबसे आसान तरीका यह होगा कि रैपर तत्वों के अंदर सभी सूचनाओं को क्रमबद्ध किया जाए:

var datas = $('.wrapper').find(':input').attr('name', function(){
    return this.nodeName.toLowerCase();
}).serializeArray();

लेकिन अगर आपको लगता है कि आपके पास इन इनपुट के लिए निर्दिष्ट नाम नहीं है और आप इसे ओवरराइड नहीं करना चाहते हैं।

0
A. Wolff 27 नवम्बर 2015, 09:12
var arr = [];
$('.wrapper').children().each(function () { 
   // code that collects select, input data
  arr.push($(this).val());
});

$('#value').html(arr)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="wrapper">
    <select>
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <input type="text" value='12'>
</div>
<div class="wrapper">
    <select>
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <input type="text" value='34'>
</div>
<div id='value'></div>

इस तरह कोशिश करें कि .children () का उपयोग करें

विवरण: मिलान तत्वों के सेट में प्रत्येक तत्व के बच्चों को प्राप्त करें, एक चयनकर्ता द्वारा वैकल्पिक रूप से फ़िल्टर किया गया।

0
guradio 27 नवम्बर 2015, 09:04

आप कुछ इस तरह का उपयोग कर सकते हैं।

var finalVal = [];
$('.wrapper').each(function () { 
   $("input, select, textarea").each(function () {
       finalVal.push($(this).val());
   });
});
0
Praveen Kumar Purushothaman 27 नवम्बर 2015, 09:02