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

在$(document).ready()之外使用jQuery

  •  1
  • ryonlife  · 技术社区  · 16 年前

    我在外部创建了一个函数 $(document).ready() ,但我仍然在里面使用jQuery。例如:

    testFunction(){
      $('#test').hide();
      alert('test');
    }
    

    当我打电话的时候 testFunction() 页面完全加载后,#test不会隐藏,但我确实看到了警报。

    我必须做什么才能在这个函数中使用jQuery?谢谢!

    更新:

    很高兴知道在外面工作没有限制 $(document).ready() .

    这就是为什么它不起作用:我不打电话 testFunction() ,我在打电话 parent.testFunction() 来自iframe,#test位于父框架中。所以……我想我不能用“#test”作为选择器。我应该用什么?

    3 回复  |  直到 5 年前
        1
  •  4
  •   Dan Herbert    16 年前

    您可以使用“ #test 作为选择者,你只需要付出 jQuery some context ,因为它总是假设你谈论的是当前文档中的ID,而不是父级:

    // Selects the test element from the parent
    var test = $('#test', parent)
    

    编辑
    jQuery是从什么上下文加载的?IFrame还是父窗口?这可能会产生很大的不同。

    我会用 alert() 测试是否使用jQuery找到了任何东西。打电话给 alert() 使用jQuery对象作为参数。

    alert($('#test'));
    // or
    alert($('#test').get(0));
    // also try
    alert(document.getElementById('test'));
    

    如果最后一个不起作用(它应该提醒“HTMLElement”,具体取决于浏览器),那么jQuery就不是问题。

        2
  •  1
  •   Hafiz Rusli    11 年前

    我知道这有点老套,但这里有另一个解决方案。可以帮助别人:D。
    jQuery('#test').hide();

        3
  •  0
  •   Genericrich    16 年前

    页面中是否有ID为test的元素?

    JQuery是否已加载?

    如果你在加载DOM后添加了#test,你需要做一些调整,将元素重新绑定到jQuery正在使用的DOM。这可能是你的问题。