jquery id选择器的问题

时间:2012-06-07 21:08:23

标签: javascript jquery html input

我有这段HT​​ML代码:

<div class="clearfix" id="menu-file-div">
  <label id="menu-file-label" for="id_menu_file">From File</label>
    <div class="input">
      <div id="file-upload">

        <input type="hidden" name="menu_file" id="id_menu_file" />

          <script type="text/javascript">var field_id = "id_menu_file";</script>
          <script type="text/javascript">var append_to_element_id = "menu-upload";</script>
          <script type="text/javascript">var loader_element_id = "newmenu-modal";</script>
        <noscript>
          <p>Please enable JavaScipt to upload a file.</p>
        </noscript>
      </div>
    </div>                
</div>     

在我的控制台中,当我尝试使用jquery id选择器时,它无法返回输入元素:

> $("#id_menu_file")
[]

有关为何如此的任何想法?我觉得我错过了一些简单的事情。谢谢!

编辑 - 其他一些javascript正在移除该元素,这就是它没有出现的原因。谢谢大家的帮助。

2 个答案:

答案 0 :(得分:1)

要重复我的第一个答案(这可能适用于其他人稍后阅读此帖子,并且尽管事实上“从根本上回答了问题”,但仍被删除):

Is this HTML inside of a frame (iframe or regular)? That could make it difficult for jQuery to find your element, unless you give it the right context.

要向jQuery选择器添加上下文,您只需将该上下文作为额外参数提供,例如:$('TD',aFrameElement);

如果有问题的元素不在一个框架内(zallarak就是这种情况),问题几乎肯定是一个时间问题:jQuery选择是在元素加载到页面之前发生的。您可以通过添加以下代码(任何地方)来测试此理论:

$(function(){
    console.log($("#id_menu_file"))
});

如果这是问题所在,只需将代码包装在$(function(){中即可解决问题。

答案 1 :(得分:0)

尝试:

$("#id_menu_file").get(0)

$(selector)返回数组