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"]')文字通り、コンビネータが含まれていないため、という名前のすべてのフォームを検索することを意味します。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を使用することもできます。ここではjQueryは不要です。getElementsByName("frmSave")[0]document.forms['frmSave']

于 2012-12-06T17:03:41.120 に答える
2

フォームが存在するかどうかを検出するために、私は使用しています

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