Javascript “如何修复”;未捕获的TypeError:未定义的不是函数;?
以下是JSFIDLE: 我将包括我的代码,然后解释什么是错误的 以下是我的HTML标题,显示所有内容都应链接:Javascript “如何修复”;未捕获的TypeError:未定义的不是函数;?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,以下是JSFIDLE: 我将包括我的代码,然后解释什么是错误的 以下是我的HTML标题,显示所有内容都应链接: <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <link rel="stylesheet" href="http://ajax.googleapis.com/a
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<link rel='stylesheet' href='test.css'/>
<script src='test.js'></script>
</head>
以下是JS:
$(document).ready(function() {
$("#draggable5").draggable({
grid: [80, 80]
});
});
所以网格将启动,段落将在那里,但是如果我尝试拖动它,它将不起作用。当我检查页面时,它给了我一个错误:“UncaughtTypeError:undefined不是一个函数”,它指向我的JS代码的第2行。我做错了什么
以下是整个HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<link rel='stylesheet' href='test.css'/>
<script src='test.js'></script>
</head>
<body>
<div class="demo">
<div id="draggable5" class="draggable ui-widget-content">
<p>I snap to a 80 x 80 grid</p>
</div>
</div>
</body>
</html>
我捕捉到一个80 x 80的网格
我认为问题可能是您正在代码的开头加载jquery和js文件。当它读取你的js时,它在寻找$(#draggable5),但是draggable5还没有加载,所以它是一个空选择器。尝试将脚本移动到body元素关闭之前。我将您提交的代码粘贴到本地HTML文件中,对我来说效果很好(我没有添加test.js,而是将代码粘贴到脚本标记中,就在关闭body标记之前)。
这是整个文件(仅在Chrome中测试)
试验
.拖拉{
宽度:80px;
高度:80px;
浮动:左;
利润率:0 10px 10px 0;
字体大小:.9em;
}
.ui小部件标题p、.ui小部件内容p{
保证金:0;
}
#snaptarget{
高度:140像素;
}
正文,html{
背景:url('http://i.imgur.com/FBs3b.png)重复;
}
我捕捉到一个80 x 80的网格
$(文档).ready(函数(){
$(“#可拖动5”)。可拖动({
网格:[80,80]
});
});
在Chrome 35.0.1916.153中非常适合我检查
jqruery ui
是否已加载…可能是由于网络问题导致加载失败…你能为我们创建一个失败的示例吗?一个工作示例没有多大帮助。这就是问题所在…它在JSFIDLE中可以工作,但如果我自己编写并启动它,它就不会工作在所有jquery脚本加载完毕后,您正在加载test.js吗?是的(注释长度权限的空格填充符)您发布的所有内容看起来都很好,这就是为什么您的代码可以在JSFIDLE上运行的原因。其中一定有其他干扰。这对我来说也很有效……一定有一些疯狂的链接问题。
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<link rel='stylesheet' href='test.css'/>
<script src='test.js'></script>
</head>
<body>
<div class="demo">
<div id="draggable5" class="draggable ui-widget-content">
<p>I snap to a 80 x 80 grid</p>
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<link rel='stylesheet' href='test.css'/>
<style type="text/css">
.draggable {
width: 80px;
height: 80px;
float: left;
margin: 0 10px 10px 0;
font-size: .9em;
}
.ui-widget-header p, .ui-widget-content p {
margin: 0;
}
#snaptarget {
height: 140px;
}
body, html {
background: url('http://i.imgur.com/FBs3b.png') repeat;
}
</style>
</head>
<body>
<div class="demo">
<div id="draggable5" class="draggable ui-widget-content">
<p>I snap to a 80 x 80 grid</p>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$("#draggable5").draggable({
grid: [80, 80]
});
});
</script>
</body>