代码之家  ›  专栏  ›  技术社区  ›  Andy

在调用$(document).ready()之前,jquery隐藏字段不可访问

  •  0
  • Andy  · 技术社区  · 17 年前

    ( aggregated from another question

    <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).ready()之后才可访问,有人能提供任何解释或文档链接吗?这是我从未经历过的事情,事实证明这很麻烦。

    5 回复  |  直到 9 年前
        1
  •  4
  •   Christoph    17 年前

    console.log() 随着 document.writeln() ,您的示例按预期工作。

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <input type="hidden" value="236434" id="ixd">
    <pre><script type="text/javascript">
    document.writeln($('#ixd').val());
    document.writeln(document.getElementById('ixd').value);
    </script></pre>
    
        3
  •  1
  •   Andrija    17 年前

    document.ready当页面“就绪”时,意味着完全呈现。 此时,您的隐藏字段可能尚未在启动日志的页面上呈现。

    使用ready()开始操作页面元素,而不是在此之前,“这是唯一可以确定的方法”:)

        4
  •  1
  •   miguelle    17 年前

    <html>
    <head>
    <script type="text/javascript" src="jquery-1.3.2.js"></script>
    </head>
    <body>
    <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>
    
    </body>
    </html>
    

        5
  •  0
  •   Ballsacian1    17 年前