0

(別の質問から集計)

Jquery 1.3.2 テスト コード、FF3 で実行:

<input type="hidden" value="236434" id="ixd" name='ixd' />

<script>
console.log( $('#ixd').val() );

console.log( $('#ixd') );
console.log( $("input[name='ixd']") );
console.log( $("input:hidden") );

console.log( $("input[name='ixd'][type='hidden']") );
console.log( $("input[name='ixd']").val() );

$(document).ready(function() {
    console.log( $('#ixd').val() );
    console.log( $('#ixd') );
    console.log( $("input[name='ixd']") );
    console.log( $("input:hidden") );
});
</script>

コンソール出力:

undefined
[]
[]
[]
[]
undefined
236434
[input#ixd 236434]
[input#ixd 236434]
[input#ixd 236434]

$(document).read() の後まで隠しフィールドのデータにアクセスできないという説明やドキュメントのリンクを誰か提供できますか? これは私が今まで経験したことのないものであり、面倒なことです。

4

5 に答える 5

4

さて、あなたはあなた自身の質問に答えたと思います。document.getElementById() を使用するには、DOM API (getElementById を含む) が機能するために、ブラウザーが DOM ツリーをロードする必要があります。

つまり、$(document).ready 関数が呼び出されるまで、getElementById の呼び出しが正しく機能するかどうかを確認することはできません。詳細については、 http://dean.edwards.name/weblog/2005/02/order-of-events/をご覧ください。

于 2009-06-15T17:27:58.673 に答える
1

document.ready ページが「準備完了」、つまり完全にレンダリングされた場合。隠しフィールドは、おそらく開始ログの時点ではまだページにレンダリングされていません。

その前ではなく、ready() を使用してページ要素の操作を開始します。「それが確実な唯一の方法です」:)

于 2009-06-15T17:28:00.000 に答える
0

DOM の準備が整うまで、何も信用してはいけません。それは物事がうまくいく方法です。準備が整うまで待つことに問題がありますか?

于 2009-06-15T17:27:12.510 に答える