【问题标题】:Running jQuery inside $(window).load() function but not inside $(document).ready function在 $(window).load() 函数内但不在 $(document).ready 函数内运行 jQuery
【发布时间】:2013-04-05 05:21:58
【问题描述】:

我有这个现有的功能,它将使用 jQuery UI 位置插件在网页中显示图标:

<script type='text/javascript'>
jQuery( document ).ready( function( $ ) {
var element_selector='.test';
if ( $(element_selector).length !== 0) {

//jQuery UI Position code here

}

 });
</script>

此函数位于 HTML 的页脚部分附近,尽管在某些地方它会输出到标题部分。有人建议我在 $(window).load() 函数中加载这个 jQuery。原因是 $(document).ready 事件是在加载 DOM 时触发的,所以它是在文档结构准备好但在加载图像之前触发的。

$(window).load() 事件在整个内容加载后触发。所以 .position() 方法在它被提前触发时(在加载图像之前)可能无法计算正确的位置。

如果是这样,如何修改 $(window).load() 中的上述负载。谢谢。

更新:我已更改:

jQuery( document ).ready( function( $ ) {

到这里:

jQuery(window).load(function($) {

我在控制台中收到此错误:

Uncaught TypeError: object is not a function 

在这一行失败:

$(divname515e62e8355b0).children().wrapAll('<div class="mydoc cf">');

其中 divname515e62e8355b0 是此处定义的选择器:

var divname515e62e8355b0 = '#test_selector';

【问题讨论】:

  • 代码中的“if”行有一个错误:它应该在大括号之前有一个右括号。
  • 谢谢我已经编辑了..
  • 另外,我希望您的第二个问题的答案是传递给“$”参数的参数可能不是 jQuery。很可能它实际上是一个事件对象。我只会删除“$”参数 - 无论如何这可能是不必要的......

标签: jquery


【解决方案1】:
jQuery(window).load(function($) {
    var element_selector='.test';
    if ( $(element_selector).length !== 0) {
        // Do stuff
    }
});

【讨论】:

  • 谢谢,但我在控制台中遇到错误:Uncaught TypeError: object is not a function,请参阅上面更新的问题..
  • 从第一行删除美元,应该没问题
【解决方案2】:

我相信 jquery 的文档准备功能有时会在图像完全准备好之前触发。我发现在开发视差站点时就是这种情况。使用纯 javascript,像这样附加到 window.onload 事件

<script type='text/javascript'>
 window.onload = function(){
  var element_selector='.test';
  if ( $(element_selector).length !== 0 {

  //jQuery UI Position code here

  }
 };
</script>

【讨论】:

    【解决方案3】:

    JQuery window.onload 函数就是这样使用的。

    <script type="text/javascript">
    window.onload = function() {  
    
     var element_selector='.test';
     if ( $(element_selector).length !== 0 {
    
     //jQuery UI Position code here
    
     }
    }
    </script>
    

    【讨论】:

    • 不 - window.load 不是 jQuery 方法。此外,使用 window.anyEvent 或 document.anyEvent 通常被认为是不好的做法 - 您应该使用 addEventListener(网络标准)和 attachEvent(ie8 及更低版本),这样您就可以确保不会覆盖现有的事件处理程序。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2014-02-15
    相关资源
    最近更新 更多