为什么$(document).data()在$(document).ready()中不起作用?

时间:2017-09-01 05:33:13

标签: jquery

我有以下代码,它成功地将urltostore.php存储为mysite.option,然后我可以将其用作全局变量。

<script>
$(document).data('mysite.option', "urltostore.php");
</script>

<script>
alert($(document).data('mysite.option'));
</script>

如果我将$(document).data函数放在$(document).ready函数中,它将停止工作:

<script>
$(document).ready(function(){
$(document).data('mysite.option', "urltostore.php");
});
</script>

<script>
alert($(document).data('mysite.option'));
</script>

最后,我想将$(document).data函数放在if条件中:

<script>
$(document).ready(function(){
if (leveldeterminant == 0{
$(document).data('mysite.option', "urltostore.php");
}
});
</script>

<script>
alert($(document).data('mysite.option'));
</script>

1 个答案:

答案 0 :(得分:0)

由于JavaScript事件循环的工作方式和$(document).ready()的行为,它无法正常工作。如果您未将$(document).data('mysite.option', "urltostore.php");放入$(document).ready(),则会立即调用它,并在您需要时随时可用。

但是,当它粘贴在$(document).ready()内时,包含它的匿名函数计划在DOM加载完成后执行,因此它实际上并没有立即执行。它等待DOM就绪事件,即在您调用alert($(document).data('mysite.option'));之后。

如果您在alert($(document).data('mysite.option'));中遇到$(document).ready(),我希望它能按您的预期运作。

至于添加条件,它应该正常工作,无论你是否坚持$(document).ready()

如果leveldeterminant等于0:

,这应该有用
if (leveldeterminant == 0) {
    $(document).data('mysite.option', "urltostore.php");
}