我知道有可能使用jQuery来mix Multiple Selector with Multiple Attribute Selector,而且我确实使用过它。 例如,这很好用:
$('input[type="checkbox"][name^="selected"]:checked', theForm).length
在我的示例中,“theForm”是一个包含“#form1”的字符串,我用它来引用具有属性id =“form1”的表单。
那就是说,问题是:是否有可能将上述内容与jQuery过滤器混合使用? 这是一个代码示例:
var myVar = $('input[name^="modcc_"]', myForm).filter(...)
我尝试使用它,我似乎没有在myVar中获取元素 但如果我这样简单地删除“myForm”
var myVar = $('input[name^="modcc_"]').filter(...)
它有效...为什么?难道我做错了什么?我肯定知道“myForm”变量被正确“填充”(它是一个包含“#formMod”的字符串,与我的表单的id属性一致)并且我确信输入在该表单内部并且它是唯一具有该ID的内容
感谢您的帮助!
P.S。 这个问题来自one of my previous I made in a comment to the accepted answer to this question但没有得到答案。我认为它无论如何都应该成为一个问题,而不是一个简单的评论,所以...在这里!希望得到答案......
- 编辑 如我所知,我在这里放置了HTML代码:
<form action="..." method="post" id="formMod" name="formMod">
<input type="hidden" name="catid" value="412" />
<td width="8%">412</td>
<td>myName</td>
<td width="9%" style="white-space:nowrap; background-color:LightGoldenRodYellow;">
<input id="modcc_icv" name="modcc_icv" type="text" value="10" maxlength="3" size="4" />.
<input id="modcc_dcv" name="modcc_dcv" type="text" value="25" maxlength="2" size="3" />%
</td>
<td width="18%" class="actions_col" style="background-color:LightGoldenRodYellow;">
[ <a href="...">Annnulla</a> ]
<input type="submit" name="confirmMod" value="Salva" />
</td>
</form>
答案 0 :(得分:1)
问题是您使用的是无效标记。
您不能将<form>
元素作为<tr>
元素的直接子元素。
您的HTML将根据浏览器以各种方式进行返工,<td>
元素及其内容可能会从form
中删除,以便<td>
为子项<tr>
。
当我在Chrome中添加标记时,就会将其呈现方式:
<tr>
<!-- THE FORM HAS LOST ITS CONTENT -->
<form action="..." method="post" id="formMod" name="formMod"></form>
<input type="hidden" name="catid" value="412">
<td width="8%">412</td>
<td>myName</td>
<td width="9%" style="white-space:nowrap; background-color:LightGoldenRodYellow;">
<input id="modcc_icv" name="modcc_icv" type="text" value="10" maxlength="3" size="4">.
<input id="modcc_dcv" name="modcc_dcv" type="text" value="25" maxlength="2" size="3">%
</td>
<td width="18%" class="actions_col" style="background-color:LightGoldenRodYellow;">
[ <a href="...">Annnulla</a> ]
<input type="submit" name="confirmMod" value="Salva">
</td>
</tr>
请注意,<form>
元素现在为空。
这就是为什么你能够找到进行文档范围搜索的<input>
元素,而不是从表单本身的上下文中找到。
所以它与.filter()
无关,而是与你首先没有选择任何元素的事实有关。
答案 1 :(得分:0)
您确定没有错误地使用myForm
代替theForm
吗?
话虽如此,您使用$(foo,bar)
选择器语法执行的操作是在foo
上下文中选择bar
个元素。如果将myForm
设置为上下文不会产生结果(在没有它的情况下进行选择时),这通常意味着您要么选择了错误的上下文,要么就是没有任何元素与您的选择器匹配在给定的背景下。