哪个jQuery事件处理程序适用于页面加载?

5

我有一个简单的页面,只想将一个加载事件附加到文档上。我不确定在jQuery中应该使用哪个事件处理程序来完成这个操作。我尝试了$()$(document).ready.load,但似乎都没有在正确的时候运行代码。我应该使用.on.live吗?还是我做错了什么?以下是一个示例:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
    $(document).ready(
        showWidth()
    );
    function showWidth() {
        alert($('#textTitle').width());
    }
</script>
</head>
<body>
<div class="page">
        <div id="title">
            <h1 id="textTitle">yo</h1>
        </div>
</div>
</body>
</html>

当我运行这个程序时,警告框会显示null
3个回答

6

你忘记将代码写入函数中了。

$(document).ready(function() {
        showWidth();
    });

或者简单地说
    $(function() {
        showWidth();
    });

有趣。我以为只是一行代码,不需要在里面加闭包。 - Travis J
1
这不是闭包,而是回调函数。你输入的内容将运行该函数并尝试将返回值分配为参数。这将返回未定义,这就是为什么在 DOM 准备好之前弹出警报的原因。如果你省略 (),那么你将分配函数引用而不执行它。 - GillesC

1

加载有两种状态。 其中一种是“DOM就绪”,可以通过以下方式来查询

// the long way
$(document).ready(function() { console.log("dom ready"); });
// the short way
$(function() { console.log("dom ready"); });

或者你想等待实际页面的“加载”(图像、iFrames等),那么你可以使用

$(window).load(function() { console.log("everything should be loaded"); });

1

试试这个 http://jsfiddle.net/vdCwE/

另外,你确定在页面中包含了jQuery吗?我在你的代码中没有看到它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接