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

时间:2009-01-19 21:21:38

标签: jquery

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

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

当我在页面完全加载后调用testFunction()时,#test不会被隐藏,但我确实看到了警告。

为了在这个函数中使用jQuery,我该怎么办?谢谢!

更新

很好理解在$(document).ready()之外工作没有限制。

这就是为什么它不起作用:我没有调用testFunction(),我从iframe调用parent.testFunction(),而#test在父框架中。所以...我想我不能用'#test'作为选择器。我该怎么用?

3 个答案:

答案 0 :(得分:3)

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

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

修改
从哪个上下文加载jQuery? IFrame还是父窗口?这可以产生很大的不同。

我使用alert()测试是否找到了jQuery的任何内容。使用jQuery对象作为参数调用alert()

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

如果最后一个不起作用(它应该警告'HTMLElement',取决于浏览器),那么jQuery不是问题。

答案 1 :(得分:1)

我知道这有点旧线程,但这是另一种解决方案。可能会帮助别人:D。
    jQuery('#test').hide();

答案 2 :(得分:0)

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

是否加载了JQuery?

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