Tengo una tarea de un cliente para corregir una página y descubrí que el selector de descendientes jQuery no se comporta como se esperaba.¿Por qué este selector de jquery no funciona?
Aquí es un excrept del HTML:
<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>
Traté de depurarlo con FireFox:
esto funcionó:
console.debug($("#mssysform8217 :input[name='email']").val());
esto no funcionó:
console.debug($("#mssysform8217 #formfield-item-email :input[name='email']").val());
indefinido
pero:
console.debug($("#mssysform8217 #formfield-item-email"));
[ítems email.formfield-formfield-elemento div #]
El problema es que el script de envío es generado por una aplicación de terceros y quiere usar el selector de descendientes de 3 niveles.
¿Por qué usa múltiples Selectores de ID ("#id")? – Homer
Y solo parece haber un '' que desciende de # formfield-item-email, por lo que el selector de atributo [name] no sería necesario. '$ ('# formfield-item-email input'). val()' debe ser todo lo que necesita. – stevelove