jQuery有没有办法在继续之前等待对象加载?

时间:2013-04-05 07:40:07

标签: jquery

我遇到与cookies有关的问题。 我有一组按钮,显示与按下的按钮相关的特定表。我已经设置了分配cookie值,我试图让它记住上次查看的内容,这样用户每次关闭页面时都不必重新选择。

if($.cookie('lastviewed') == "value") {
   $('#Button1').trigger('click');
   $('#Button2').trigger('click');
}

按钮1在按钮2中加载,因此上述操作无效,因为它试图触发尚不存在的内容。

有没有办法让它在继续之前等待它加载?

编辑:我已经在使用document.ready了。 单击按钮1将按钮2加载到页面上,我需要它等待它在按钮2中完成加载,然后再尝试单击它。

2 个答案:

答案 0 :(得分:2)

您需要使用document.ready来确保html元素在被javascript / jQuery访问之前可用。

$(document).ready(function(){
  if($.cookie('lastviewed') == "#value") {
     $('#Button1').trigger('click');
     $('#Button2').trigger('click');
  }    
});
  

当JavaScript提供用于执行代码的load事件时   页面呈现,此事件在所有资产之前都不会被触发   如图像已被完全接收。在大多数情况下,   只要DOM层次结构完全可以运行脚本   建造。传递给.ready()的处理程序是保证的   在DOM准备好之后执行,所以这通常是最好的地方   附加所有其他事件处理程序并运行其他jQuery代码。 Reference

答案 1 :(得分:1)

您可能也想尝试一下:

$(document).ready(function () {
    if ($.cookie('lastviewed') == "value") {
        setTimeout(function () {
            $('#Button1').trigger('click');
            $('#Button2').trigger('click');
        }, 100);
    }
});

延迟100ms后,这将导致在调用所有$(document).ready()处理程序后发生click事件。