0

我看过一堆代码,没有一个有效,我可能遗漏了一些东西。在 jquery 和 javascript 中唯一对我有用的是 document.write 。我不知道代码是否有问题,或者我是否必须包含一些内容

<html>
<head>
</head>
<body>

<script type="text/javascript">
    $('#klik').click(function() {

        $('#klik').text('test');

    }); 
</script>

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>


<button id="klik">Click me!</button>

</body>
</html>
4

2 回答 2

1

您必须在使用它之前包含 jquery,并且当您尝试访问它时 dom 没有按钮

在这里工作小提琴:http: //jsfiddle.net/p3LuH/

<html>
<head>
</head>
<body>

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>

<button id="klik">Click me!</button>
<script type="text/javascript">
        $('#klik').click(function() {

            $('#klik').text('test');

        }); 
</script>
</body>
</html>
于 2013-04-25T21:35:11.170 回答
0

这里的问题是,当您的代码运行时,没有 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>标记之前,这样就可以在您可能操作的所有元素之后(并且不会减慢页面的感知负载)。

参考:

于 2013-04-25T21:35:09.603 回答