44

我有以下 HTML:

<form name="frmSave">...</form>

只是要知道,我无法修改 HTML 以添加id或其他内容。

这就是我试图form通过它的名称来获取元素的内容:

var frm = $('form[name="frmSave"]');

console.log(frm);

(但我相信上面的代码会尝试获取一个frmSave名称在form其中的子元素,这不是我需要的)。

我怎样才能做到这一点,是否可以form通过name和使用选择器来获得?


更新:

我在我的原始代码中做错了方式(我在选择器中使用了一个空格,也就是“组合器”)而不是在代码片段中,所以 jQuery 试图获取任何具有所需名称的子元素,我在问自己什么是错的,因为没有返回任何东西。

接受的答案对此给出了更好的解释,所以一点空间可以改变一切 - 下次我会好好睡觉:-)

4

4 回答 4

83

$('form[name="frmSave"]')是正确的。您提到您认为这会使所有frmsave在表单中具有该名称的孩子;只有在表单和选择器之间有空格或其他组合符时才会发生这种情况,例如:$('form [name="frmSave"]');

$('form[name="frmSave"]')字面意思是查找所有带有 name 的表单frmSave,因为不涉及组合器。

于 2012-12-06T17:03:04.597 回答
10
    // 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.
于 2013-11-21T08:48:41.800 回答
6

您没有组合子(空格、>... +),因此永远不会有孩子参与其中。

ID但是,您可以通过使用and来避免对 jQuery 的需求getElementById,或者您可以使用旧getElementsByName("frmSave")[0]的甚至更旧的document.forms['frmSave']. 这里不需要 jQuery。

于 2012-12-06T17:03:41.120 回答
2

为了检测表单是否存在,我正在使用

if($('form[name="frmSave"]').length > 0) {
    //do something
}
于 2017-03-30T11:59:37.223 回答