2013-04-05 104 views
3

我有一个关于cookies的问题。 我有一组按钮,显示与推送按钮相关的特定表格。我设置了cookie值,我试图让它记住上次查看的内容,这样用户在每次关闭页面时都不必重新选择所有内容。jQuery有没有办法在继续之前等待对象加载?

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

按钮1加载按钮2,所以上述不起作用,因为它试图触发一些不存在的东西。

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

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

回答

1

你可能会想试试这个太:

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

100ms的延迟之后,这会导致点击事件所有的$(document)。就绪()处理程序被调用后。

2

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

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

虽然JavaScript提供了当 呈现页面时执行代码的加载事件,该事件不会被触发,直至这样 图像已被完全接收的所有资产。在大多数情况下,只要DOM层次已完全构建,就可以运行 脚本。传递给.ready()的处理程序保证在DOM准备就绪后执行 ,所以这通常是 附加所有其他事件处理程序并运行其他jQuery代码的最佳位置。 Reference

+1

我已经在使用document.ready。 按钮2将不会加载,直到按钮1被点击后,所以当时它试图在按钮2不存在时点击两者。 – NuMs 2013-04-05 08:29:42

相关问题