4

我有一个关于 cookie 的问题。我有一组按钮,它们显示与按下的按钮相关的特定表格。我设置了它来分配 cookie 值,并且我试图让它记住上次查看的内容,这样用户就不必在每次关闭页面时都重新选择所有内容。

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

按钮 1 在按钮 2 中加载,因此上述方法不起作用,因为它试图触发尚不存在的东西。

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

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

4

2 回答 2

2

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

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

虽然 JavaScript 在页面呈现时提供了用于执行代码的加载事件,但在完全接收到所有资产(例如图像)之前,不会触发此事件。在大多数情况下,只要完全构建了 DOM 层次结构,就可以运行脚本。传递给 .ready() 的处理程序保证在 DOM 准备好后执行,因此这通常是附加所有其他事件处理程序和运行其他 jQuery 代码的最佳位置。参考

于 2013-04-05T07:41:09.027 回答
1

你可能也想试试这个:

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

延迟 100 毫秒后,这将在调用所有 $(document).ready() 处理程序后引发 click 事件。

于 2013-04-05T07:50:36.947 回答