我在$(document).ready()之外创建了一个函数,但我仍然在其中使用jQuery。例如:
testFunction(){
$('#test').hide();
alert('test');
}
当我在页面完全加载后调用testFunction()时,#test不会被隐藏,但我确实看到了警告。
为了在这个函数中使用jQuery,我该怎么办?谢谢!
更新
很好理解在$(document).ready()之外工作没有限制。
这就是为什么它不起作用:我没有调用testFunction(),我从iframe调用parent.testFunction(),而#test在父框架中。所以...我想我不能用'#test'作为选择器。我该怎么用?
答案 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。这可能是你的问题。