2011-10-31 9 views
6

Tôi đang cố gắng tạo danh sách thứ tự các mục có thể nhấp và kéo với phiên bản plugin jQuery UI có thể sắp xếp 1.8.16. Tuy nhiên, tôi tiếp tục nhận được lỗi là $("#ol-id ol").sortable is not a function, với 'ol-id' là id của danh sách. Mã của tôi như sau:jQuery có thể sắp xếp không phải là chức năng

//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... 
     } 
    }) 
} 

Rất tiếc, lỗi xuất hiện trong Firebug như đang ở trên dòng với update: function(){.

Tôi đã xác minh rằng chức năng này được gọi sau khi cả hai trang được tải và thư viện giao diện người dùng jQuery được tải. Tôi bao gồm cả jquery-1.6.2.min.js và jquery-ui-1.8.16.custom.min.js trong tiêu đề. Hơn nữa, tôi đã xác minh rằng tất cả các tên id là chính xác và phù hợp với các đối tác HTML của chúng.

Vì vậy, nếu đó không phải là nội dung liên quan đến tài nguyên bị thiếu, điều gì gây ra sự cố?

EDIT: đây là tiêu đề HTML của tôi:

<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"> 
+2

Bạn đã bao gồm jQuery UI sau jQuery chưa? –

+0

Hãy thử '$ (this) .sortable ({disabled: true});' bên trong 'update', chỉ để kiểm tra. – yoda

+0

Tôi đã xác minh rằng giao diện người dùng jQuery được tải sau jQuery và vấn đề vẫn còn ở đây. Ngoài ra, việc sử dụng 'this' thay cho id thích hợp sẽ không xóa lỗi. Tuy vậy vẫn cảm ơn về những gợi ý! – CodeRedd

Trả lời

12

jQuery UI và jQuery phải được nạp theo một thứ tự nhất định:

<script src="jquery.js">... 
<script src="jquery-ui.js">... 

Hãy chắc chắn rằng bạn đã bao gồm jQuery UI sau jQuery.

+0

Tôi đã xác minh rằng giao diện người dùng JQuery được tải sau JQuery. Thật không may, vấn đề vẫn còn hiện diện. – CodeRedd

+0

Bạn có thể đăng HTML '' không? – Blender

+0

cảm ơn vì điều này! nó hoạt động! – CaffeineShots

2

Vì vậy, không chắc chắn nếu điều này sẽ giúp bất cứ ai, nhưng tôi chạy vào một tình huống tương tự, mà tôi đã có thể giải quyết. Điều này dường như xảy ra khi

a) thứ tự tải jQuery-ui và jQuery là sai.

b) jQuery đang được bao gồm nhiều lần hoặc các phiên bản khác nhau đang được bao gồm.

Tùy chọn "b" xảy ra với tôi vì tôi đang sử dụng mẫu bootstrap, trong đó jQuery được bao gồm ở cuối tài liệu, đó là khóa học tốt nhất, trong khi mã tôi đã thử nghiệm đã thêm một phiên bản khác của jQuery trên đầu của trang.

Tôi thấy rằng mã trên câu hỏi này có vẻ như nó chứa một số lượng trùng lặp, vì vậy tôi khuyên bạn nên làm sạch mã đó làm khởi đầu.

0

Vấn đề của tôi là tôi đã sử dụng jQuery (...). Sắp xếp được() thay vì $ (...). Sắp xếp được()

Không chắc chắn tại sao mattered đó, nhưng thay đổi nó để $ sửa nó.

3

Tôi đã gặp vấn đề tương tự và đó là vì một tệp js khác đã được đưa vào ở cuối trang có một số hàm jQuery. Khi tôi chuyển trang này lên đầu trang, phía trên bao gồm jQuery và jQuery-UI mọi thứ đều hoạt động tốt.

0

tôi đã tìm thấy giải pháp mới, chỉ chỉnh sửa acf.tập tin php ở vị trí thứ 551 dòng

'deps'  => array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'underscore', 'select2'), 

mới

'deps'  => array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'jquery-ui-sortable', 'underscore', 'select2'), 

tôi chỉ cần thêm jquery-ui-sortable trong mảng tôi hy vọng giúp đỡ một ai đó cảm ơn bạn.