2010-11-22 29 views
5

मेरे पास एक पृष्ठ से एक पृष्ठ को सही करने के लिए एक क्लाइंट से एक कार्य है और मैंने पाया कि jQuery वंशज चयनकर्ता अपेक्षा के अनुसार व्यवहार नहीं करता है।यह jquery चयनकर्ता क्यों काम नहीं करता है?

<form action="http://submit.url/subscribe.php" method="post" enctype="multipart/form-data" id="mssysform8217" class="mssysform" > 
<div id="mssys-formcontainer"> 
    <div class="formfields"> 
     <table style="width: 100%"> 
     <div class="formfield-item" id="formfield-item-email"> 
      <tr> 
      <td class="style1"><label >E-mail címe</label></td> 
      <td> 
       <input type="text" name="email" value=""> 
       <div class="error-container">Please fill in this field!</div> 
       <div style="clear: both;"></div> 
      </td> 
      </tr> 
     </div> 
     </table> 
    </div> 
</div> 
</form> 

मैं फ़ायर्फ़ॉक्स के साथ इसे डिबग करने की कोशिश की:

  • इस काम किया:

    यहाँ एचटीएमएल का एक excrept है

    console.debug($("#mssysform8217 :input[name='email']").val()); 
    

    [email protected]

  • इस काम नहीं किया:

    console.debug($("#mssysform8217 #formfield-item-email :input[name='email']").val()); 
    

    अपरिभाषित

  • लेकिन:

    console.debug($("#mssysform8217 #formfield-item-email")); 
    

    [div # formfield-मद-email.formfield-आइटम]

समस्या यह है कि सबमिट स्क्रिप्ट किसी तृतीय पक्ष ऐप द्वारा उत्पन्न होती है और यह 3 स्तर के वंशज चयनकर्ता का उपयोग करना चाहता है।

+0

आप एकाधिक आईडी चयनकर्ताओं ("#id") का उपयोग क्यों कर रहे हैं? – Homer

+0

और वहां केवल एक '' # फॉर्मफील्ड-आइटम-ईमेल से निकलने वाला प्रतीत होता है, इसलिए [नाम] विशेषता चयनकर्ता अनावश्यक होगा। '$ ('# फॉर्मफील्ड-आइटम-ईमेल इनपुट')। वैल()' आपको बस इतना चाहिए। – stevelove

उत्तर

16

जो jQuery चयनकर्ता आप उपयोग करने का प्रयास कर रहे हैं वह काम नहीं करेगा क्योंकि HTML अमान्य है।

<table style="width: 100%"> 
     <div class="formfield-item" id="formfield-item-email"> 
      <tr> 

यह मान्य HTML नहीं है। सेल के बाहर एक तालिका के बीच में div (या <thead>, <tfoot>, <tbody>, <tr>) के अलावा किसी भी तत्व को स्थानांतरित करने के लिए मान्य नहीं है।

यह मान्य है:

<div> 
    <table> 
    <tr><td></td></tr> 
    </table> 
</div> 

या यह मान्य है:

<table> 
    <tr><td><div></div></td></tr> 
</table> 

एक तरफ ध्यान दें पर: आप तालिका का उपयोग कर रहे अपने प्रपत्र फ़ॉर्मेट करने के लिए । सारणी सारणी डेटा के लिए हैं। लेआउट के लिए टेबल का उपयोग करना मेरी पुस्तक में एक बुरा विचार है। एचटीएमएल तत्वों के लिए उचित अर्थशास्त्र का प्रयोग करें (टेबल = टैब्यूलर डेटा, ली = सूचियां, div = पेज डिवीजन, आदि ...)।

+1

* "तालिका के बीच में एक div (या कोई तत्व) रखने के लिए मान्य नहीं है ..." * अपवाद '' और '' अपवाद हैं। – user113716

+0

@patrick आपका अधिकार रहा ... क्षमा करें मैं जवाब ठीक कर दूंगा। –

+0

वें सीधे एक टेबल में नहीं रखा जा सकता है। यह एक हेडर * सेल * है और हमेशा एक टीआर के अंदर होना चाहिए। फिर भी +1। – GolezTrol

संबंधित मुद्दे