我遇到与cookies有关的问题。 我有一组按钮,显示与按下的按钮相关的特定表。我已经设置了分配cookie值,我试图让它记住上次查看的内容,这样用户每次关闭页面时都不必重新选择。
if($.cookie('lastviewed') == "value") {
$('#Button1').trigger('click');
$('#Button2').trigger('click');
}
按钮1在按钮2中加载,因此上述操作无效,因为它试图触发尚不存在的内容。
有没有办法让它在继续之前等待它加载?
编辑:我已经在使用document.ready了。 单击按钮1将按钮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事件。