sip*_*tti 5 html jquery jquery-selectors
我有一个来自客户端的任务来更正页面,我发现jQuery后代选择器没有按预期运行.
这是HTML的一个excrept:
<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>
Run Code Online (Sandbox Code Playgroud)
我尝试用FireFox调试它:
这工作:
console.debug($("#mssysform8217 :input[name='email']").val());
Run Code Online (Sandbox Code Playgroud)
test@gmail.com
这没效果:
console.debug($("#mssysform8217 #formfield-item-email :input[name='email']").val());
Run Code Online (Sandbox Code Playgroud)
未定义
但:
console.debug($("#mssysform8217 #formfield-item-email"));
Run Code Online (Sandbox Code Playgroud)
[DIV#formfield项-email.formfield项目]
问题是提交脚本是由第三方应用程序生成的,它想要使用3级后代选择器.
Joh*_*ock 16
您尝试使用的jQuery选择器将无法工作,因为HTML无效.
<table style="width: 100%">
<div class="formfield-item" id="formfield-item-email">
<tr>
Run Code Online (Sandbox Code Playgroud)
这不是有效的HTML.它不是有效的放置一个div(或比其他任何元件<thead>,<tfoot>,<tbody>,<tr>在一个表中的中间)在细胞外.
这是有效的:
<div>
<table>
<tr><td></td></tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
或者这是有效的:
<table>
<tr><td><div></div></td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
旁注:您正在使用该表格式化表单.表格用于表格数据.在我的书中使用表格进行布局是一个坏主意.对HTML元素使用适当的语义(表=表格数据,li =列表,div =页面划分等...).