我正在尝试使用Sortable jQuery UI插件版本1.8.16创建一个有序的可点击和拖动项目列表。但是,我不断收到$("#ol-id ol").sortable is not a function
的错误,其中'ol-id'是列表的ID。我的代码如下:
//Sorting stuff
if($("#li-id li").size()>1) {
$("#ol-id ol").sortable({
revert: true,
axis: 'y',
containment: 'parent',
cursor: 'move',
handle: 'div.link_div',
smooth: false,
opacity: 0.7,
tolerance: 'pointer',
start: function(){
$("#ol-id").removeClass("bottom_dragged");
},
update: function(){
$("#ol-id ol").sortable({disabled : true});
$("#saving_indicator").html("saving...")
$("#saving_indicator").show();
//do other stuff...
}
})
}
奇怪的是,错误显示在Firebug中与update: function(){
一致。
我已经验证在加载页面并加载jQuery UI库之后调用此函数。我在头文件中包含了jquery-1.6.2.min.js和jquery-ui-1.8.16.custom.min.js。此外,我已经验证所有id名称都是正确的,并且与HTML对应名称匹配。
那么,如果不是这个缺少与资源相关的东西,导致问题的原因是什么?
编辑:这是我的HTML标题:
<link href="/_css/styles.css?mod=1317745564" type="text/css" rel="stylesheet">
<link href="/_javascript/qtip/jquery.qtip.min.css?mod=1315947301" type="text/css" rel="stylesheet">
<script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js">
<script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
<link rel="stylesheet" type="text/css" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/start/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/le-frog/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js" type="text/javascript">
<script src="/_javascript/sets.js?mod=1320080042" type="text/javascript"> //Sorting stuff code is here
<script type="text/javascript" src="http://dev.selfcheck.vudat.msu.edu/_javascript/jquery.jsonp.js">
<script type="text/javascript" src="http://dev.selfcheck.vudat.msu.edu/_javascript/jquery.form.js">
<script type="text/javascript" src="http://dev.selfcheck.vudat.msu.edu/_javascript/qtip/jquery.qtip.min.js">
<link href="/_css/ui/ui.core.css?mod=1315947279" type="text/css" rel="stylesheet">
<link href="/_css/ui/ui.theme.css?mod=1315947280" type="text/css" rel="stylesheet">
答案 0 :(得分:14)
jQuery UI和jQuery必须按特定顺序加载:
<script src="jquery.js">...
<script src="jquery-ui.js">...
确保在jQuery之后包含jQuery UI。
答案 1 :(得分:4)
所以不确定这是否对任何人有帮助,但我遇到了类似的情况,我能够解决。所以这似乎发生在
a)加载jQuery-ui和jQuery的顺序是错误的。
b)jQuery被包含多次,或者包含不同的版本。
选项&#34; b&#34;发生在我身上是因为我使用的是自举模板,其中jQuery包含在文档的底部,这当然是最佳实践,而我正在测试的代码在页面顶部添加了不同版本的jQuery。 / p>
我看到这个问题的代码看起来像包含了许多重复内容,所以我建议将其清理干净。
答案 2 :(得分:4)
我有同样的问题,因为另一个js文件被包含在页面底部,它有一些jQuery函数。当我把它移到页面顶部时,在我的jQuery和jQuery-UI之上,一切都很棒。
答案 3 :(得分:0)
我的问题是我使用 jQuery (...)。sortable()而不是 $ (...)。sortable()
不确定为什么重要,但将其更改为 $ 修复它。
答案 4 :(得分:-1)
我找到了新的解决方案, 只需在第551行编辑acf.php文件
旧
'deps' => array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'underscore', 'select2'),
新
'deps' => array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'jquery-ui-sortable', 'underscore', 'select2'),
我刚在数组中添加了jquery-ui-sortable
我希望能帮助别人
谢谢。