2012-11-15 10 views
19

के साथ अभिभावक के वर्ग के साथ पहले बच्चे का चयन करें clone() के प्रयोजनों के लिए मैं किसी विशेष वर्ग के साथ किसी विशेष वर्ग के माता-पिता के किसी विशेष वर्ग का केवल पहला बच्चा कैसे चुन सकता हूं?jquery कक्षा

<div class="sector_order"> 

    <div class="line_item_wrapper"> 
    SELECT THIS DIV 
    </div> 

    <div class="line_item_wrapper"> 
    NOT THIS DIV 
    </div> 

</div> 

मैं इस तरह कोशिश कर रहा हूँ:

var form1 = $(this) 
    .parents('.sector_order') 
    .children('.line_item_wrapper') 
    .children().clone(true) 

और वर्ग line_item_wrapper के साथ दोनों आंतरिक divs मिलता है, लेकिन जब मैं इस इसके साथ की कोशिश मैं एक खाली वस्तु मिलती है:

children('.line_item_wrapper :first') 

धन्यवाद!

उत्तर

35

आपका समस्याओं की कोशिश है कि अपने चयनकर्ता मैं कुछ गलत तरीके से:

parents() विधि में पारित चयनकर्ता से मेल खाते एक, दो या कई तत्व लौटाता है; अपने पहले मिलान वाले तत्व को सीमित करने के लिए closest() का उपयोग करें (जो एक या नहीं, तत्वों को पारित करने वाले तत्व से मेल खाता है)।

children() विधि का पहला उपयोग दोनों तत्वों देता है, क्योंकि वे दोनों आपूर्ति चयनकर्ता से मेल और line_item_wrapper के वर्ग है, आपको स्पष्ट रूप से यह बताने की ज़रूरत है कि आप दोनों में से कौन सा चाहते हैं, आप या तो :first चयनकर्ता (या first() विधि), या :first-child चयनकर्ता का उपयोग कर सकते हैं।

children() विधि का दूसरा कॉल चयनकर्ता द्वारा मिलान किए गए पहले तत्व के बच्चों को पाता है, जो आप नहीं चाहते हैं।

वैसे भी, आप माता-पिता (समान $(this) तत्व से शुरू) का उपयोग करना चाहिए, यदि:

var form1 = $(this).closest('.sector_order').find('.line_item_wrapper:first').clone(true); 

या:

var form1 = $(this).closest('.sector_order').find('.line_item_wrapper').first().clone(true); 

या:

var form1 = $(this).closest('.sector_order').find('.line_item_wrapper:first-child').clone(true); 

या, स्पष्ट रूप से, एक आसान दृष्टिकोण (लेकिन यह अभिभावक वर्ग-नाम जांच के साथ बांटता है):

var form1 = $(this).prevAll('.line_item_wrapper:last'); 

या:

var form1 = $(this).siblings('.line_item_wrapper').eq(0); 

संदर्भ:

+0

यह बेहद सहायक है। इसे समझाने के लिए समय निकालने के लिए बहुत बहुत धन्यवाद। – 1252748

+0

आपका बहुत स्वागत है; मुझे मदद मिली है! =) –

1

इस प्रयास करें:

var $firstDiv = $(".sector_order > .line_item_wrapper:eq(0)"); 

यह आपको वर्ग line_item_wrapper साथ sector_order के पहले प्रत्यक्ष वंशज मिल जाएगा।

Example fiddle

8

आप children() को गलत चयनकर्ता गुजर रहे हैं। बजाय

.children('.line_item_wrapper :first') 

.children('.line_item_wrapper').first() 
2

उपयोग :first-child

var form1 = $(this).closest('.sector_order').find(':first-child'); 

या .first()

var form1 = $(this).closest('.sector_order').find('.line_item_wrapper').first(); 
संबंधित मुद्दे