这里的问题是,当您的代码运行时,没有 ID 为 DOM 元素klik
。因此,将事件处理程序附加到它的代码不会做任何事情。
如果您只是将script
元素移动到定义该元素的位置下方(以及包含 jQuery 的下方,因为您依赖于正在加载的 jQuery),它将起作用:
<html>
<head>
</head>
<body>
<button id="klik">Click me!</button>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
// Since this doesn't run until the element exists, it works
$('#klik').click(function() {
$('#klik').text('test');
});
</script>
</body>
</html>
或者,如果您愿意,您可以使用该ready
事件,在创建 HTML 中的所有 DOM 元素之前不会触发该事件:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() { // <== This sets up a handler for the `ready` event
// Since this doesn't run until the `ready` fires, the element exists, and it works
$('#klik').click(function() {
$('#klik').text('test');
});
});
</script>
</head>
<body>
<button id="klik">Click me!</button>
</body>
</html>
除非有充分的理由使用ready
,否则最好将 放在script
的末尾body
,就在结束</body>
标记之前,这样就可以在您可能操作的所有元素之后(并且不会减慢页面的感知负载)。
参考: