我有以下HTML:
<form name="frmSave">...</form>
要知道,我无法修改HTML以添加id
或其他内容。
这就是我试图通过它的名字获取form
元素:
var frm = $('form[name="frmSave"]');
console.log(frm);
(但我相信上面的代码会尝试在frmSave
内找到form
名称中不是我需要的子元素。
如何实现这一目标,是否可以通过form
并使用选择器获取name
?
我在原始代码中做了错误的方式(我在选择器中使用了一个名为“combinator”的空间),而不是在这里的代码片段中,所以jQuery试图获取所有需要名称的子元素因为什么都没有回来,我问自己出了什么问题。
接受的答案给出了更好的解释,所以一点空间可以改变一切 - 下次我会睡得正确: - )
答案 0 :(得分:69)
$('form[name="frmSave"]')
是正确的。你提到过你认为这会让所有孩子在表格中得到名字frmsave
;只有在表单和选择器之间有空格或其他组合符时才会发生这种情况,例如:$('form [name="frmSave"]');
$('form[name="frmSave"]')
字面意思是查找名称为frmSave
的所有表单,因为没有涉及组合器。
答案 1 :(得分:9)
// this will give all the forms on the page.
$('form')
// If you know the name of form then.
$('form[name="myFormName"]')
// If you don't know know the name but the position (starts with 0)
$('form:eq(1)') // 2nd form will be fetched.
答案 2 :(得分:6)
你没有组合子(空格,>
,+
......)所以没有孩子会参与其中。
但是,您可以使用ID
和getElementById
来避免使用jQuery,或者可以使用旧的getElementsByName("frmSave")[0]
或更旧的document.forms['frmSave']
。这里不需要jQuery。
答案 3 :(得分:2)
为了检测表格是否存在,我使用
if($('form[name="frmSave"]').length > 0) {
//do something
}