【发布时间】:2023-03-19 16:48:01
【问题描述】:
我有一个来自客户端的任务来更正页面,我发现 jQuery 后代选择器的行为不符合预期。
这是 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>
我尝试用 FireFox 调试它:
-
这行得通:
console.debug($("#mssysform8217 :input[name='email']").val());test@gmail.com
-
这不起作用:
console.debug($("#mssysform8217 #formfield-item-email :input[name='email']").val());未定义
-
但是:
console.debug($("#mssysform8217 #formfield-item-email"));[div#formfield-item-email.formfield-item]
问题是提交脚本是由第三方应用生成的,它想使用 3 级后代选择器。
【问题讨论】:
-
为什么要使用多个 ID 选择器(“#id”)?
-
而且似乎只有一个
<input>从#formfield-item-email 降序,因此不需要[name] 属性选择器。$('#formfield-item-email input').val()应该是你所需要的。
标签: jquery html jquery-selectors