6

Tôi có danh sách ảnh và tôi có thể kéo ảnh được thêm vào chúng, tuy nhiên khi ảnh được kéo ra bên ngoài div mẹ, tôi muốn thay đổi lớp đó để nó chỉ ra rằng nếu bạn thả nó, nó sẽ bị xóa, và sau đó khi người dùng thả nó, tôi muốn nó kích hoạt một chức năng. (Chỉ khi nó nằm ngoài của div cha mẹ)jQuery có thể kéo được, sự kiện khi bị bỏ ngoài div cha mẹ

<ul class="photos"> 
<li><img src=""/></li> 
<li><img src=""/></li> 
</ul> 

vì thế khi một li được kéo bên ngoài .photos, nó cháy để thêm lớp, và sau đó nếu nó rơi bên ngoài của nó, sau đó nó cháy và sự kiện để gỡ bỏ nó.

Trả lời

10

Giả phụ huynh div bạn đề cập đến là một droppable, bạn có thể gắn một event handler cho sự kiện dropout:

$("#parentDiv").on("dropout", function(event, ui) { 
    //ui.draggable refers to the draggable 
}); 

Sự kiện này sẽ cháy bất cứ lúc nào một chấp nhận kéo được kéo ngoài khu vực khoan dung của droppable .

Cập nhật (xem ý kiến)

Bạn có thể cung cấp một chức năng gọi lại để tùy chọn revert. Các chức năng có thể mất một đối số mà mỗi chứa droppable mà trên đó có thể kéo đã bị bỏ, hoặc false (nếu nó đã bị bỏ ở đâu đó không hợp lệ):

$("#draggable").draggable({ 
    revert: function(valid) { 
     if(!valid) { 
      //Dropped outside of valid droppable 
     } 
    } 
}); 

Dưới đây là một working example.

+0

Làm việc này để thêm lớp vào nó, tuy nhiên điều gì sẽ phát hiện khi nó thực sự bị loại bỏ? –

+0

Điều này sẽ kích hoạt khi bạn kéo nó ra bên ngoài ống dẫn. Tôi nghĩ rằng đó là những gì bạn muốn, vì vậy bạn có thể thêm một lớp học để kéo khi nó kéo bên ngoài của droppable? –

+0

Có, nhưng tôi sẽ phát hiện ra khi nó thực sự bị rơi ra ngoài? –

Các vấn đề liên quan