我开始使用jQuery了。我一直试图将它与我之前存在的一些JavaScript代码混合在一起,所以我不必重写所有内容。我读过许多地方,这是完全可行的。但是,每当我包含任何jQuery行时,标准JavaScript就会停止运行。
以下是一些例子:
<!DOCTYPE html>
<html>
<head>
<style>
#testjquery {
height: 300px;
width: 300px;
}
</style>
</head>
<body>
<div id="testjquery" onclick="testClick()">This is the stuff.</div>
<script src='jquery-1.10.2.min.js'></script>
<script>
$(document).ready(function() {
function testClick() {
document.getElementById("testjquery").style.background = "blue";
}
});
</script>
</body>
</html>
这不起作用,当点击时我得到一个未定义的函数错误。
但是,把它放在身体
<body>
<div id="testjquery">This is the stuff.</div>
<script src='jquery-1.10.2.min.js'></script>
<script>
$(document).ready(function() {
$("#testjquery").click(function() {
$(this).css("background", "blue");
});
});
</script>
</body>
正常工作,与标准JavaScript中的等效工具一样。
答案 0 :(得分:9)
不要将您的函数包装在DOM ready($(document).ready(function(){)
处理程序中。因为它是一个匿名函数,所以testClick()
函数有local scope
。所以你不能在DOM ready
之外调用它}
function testClick() {
document.getElementById("testjquery").style.background = "blue";
}
答案 1 :(得分:5)
文档准备就绪时运行以下块,并创建一个在匿名函数外部不可见的本地函数testClick()
(由function(){
创建的函数在第一行)。
$(document).ready(function(){
function testClick(){
document.getElementById("testjquery").style.background="blue";
}
});
如果要定义可以直接调用的全局函数,则不应将其放在文档就绪处理程序中。改为将其改为此。
function testClick(){
document.getElementById("testjquery").style.background="blue";
}