2011-11-21 18 views
27

Tôi có một loạt các yếu tố. Một số có thể kéo được, một số có thể phân hủy và một số là cả hai. Làm cách nào tôi có thể phát hiện xem một phần tử có thể kéo hoặc có thể phân tách không?Làm cách nào để kiểm tra xem một phần tử có thể phân tách, có thể kéo hoặc khác 'ble' không?

+0

Tại sao bạn không thể sử dụng bộ chọn ban đầu được sử dụng khi instantiating 'droppable' hoặc 'draggable'? – zzzzBov

+0

@zzzzBov, conrol của tôi được tải bằng AJAX, vì vậy tôi không biết điều gì đã xảy ra trên tài liệu. –

+0

vui lòng hiển thị một số mã. Tôi không biết bạn đang nói về cái gì. Nếu bạn đang gửi một số HTML qua AJAX, thì tại sao nó lại quan trọng cho dù phần tử có thể kéo được hay có thể phân tách? – zzzzBov

Trả lời

25

Bạn cũng có thể sử dụng dữ liệu jquery() như thế này ..

if ($(elem).data('draggable')) { 
     alert("yes"); 
} 
else { 
     alert("no"); 
} 

if ($(elem).data('fooable')) { 
     alert("yes"); 
} 
else { 
     alert("no"); 
} 

Xem nó ở đây: http://bootply.com/60153

+3

chỉ cần chắc chắn rằng bạn không thực sự viết nếu/else tuyên bố mà không cần niềng răng! – Mathletics

+0

Vì vậy, jQuery đăng ký tất cả các '~ bles' của họ trong '.data'? –

+0

Vâng, jQuery sử dụng dữ liệu() cho rất nhiều nội dung - http://ejohn.org/apps/workshop/adv-talk/ - Việc kiểm tra lớp CSS cũng khả thi, tôi không chắc điều nào sẽ tốt hơn trong trường hợp của bạn, hoặc từ quan điểm hiệu suất. – ZimSystem

5

Đối với các yếu tố có thể kéo:

$(elem).is('.ui-draggable') 

hoặc bạn có thể filter, hoặc chỉ cần chọn $('.ui-draggable');.

Đối droppable, bạn sẽ sử dụng .ui-droppable, thay đổi kích thước là .ui-resizable, có thể lựa chọn là .ui-selectable cho container mặc dù các mục mà bạn chọn là .ui-selectee, sắp xếp được là .ui-sortable cho container.

+0

Điều gì là tốt hơn? Css lớp kiểm tra hoặc kiểm tra trong 'dữ liệu'? Và tại sao? –

+0

Điều đó thực sự phụ thuộc vào việc triển khai của bạn. Nó rất dễ dàng để loại bỏ một lớp học, nó cũng dễ dàng để loại bỏ một số dữ liệu. Tôi nhận được cảm giác rằng câu hỏi này là một triệu chứng của việc sử dụng phương pháp sai. – zzzzBov

14

này làm việc cho tôi với JQuery 1.10.2

if ($("el").data('uiDraggable')){ //or uiDroppable 
    alert("draggable") 
} else { 
    alert("not draggable") 
} 

Ngoài ra nó có thể gọi phương thức .data() mà không có đối số

$("el").data() 

Đó nên in cái gì đó như

Object {uiDraggable:.. $ (Chức năng ẩn danh) (chức năng ẩn danh)}

nơi bạn có thể xem các thuộc tính đối tượng.

0

tôi sử dụng Modernizr:

if (Modernizr.draganddrop) { 
// use drag and drop 
} 
Các vấn đề liên quan