拖出元素后使div可拖放

时间:2016-09-21 02:29:42

标签: jquery coffeescript droppable

此座位图视图显示"席位"的网格。他们中的大多数都是从已经在里面的学生开始这些座位不以" droppable-item"开头。因为我不希望用户将学生放入已经占用的座位。一旦用户将学生拖出座位,该座位就会变得可以放置。

我也在努力从新席位中删除droppable类,但这可能需要一个不同的问题。

我读过的所有解决方案都表明我销毁了原始的dropable。但这似乎并不适用于此,因为此视图包含十几个droppables。

以下代码包括我尝试完成这项工作。旧座位确实获得了" droppable-item" class 喜欢它,但似乎不接受任何学生。

seminars.coffee

ready = ->
    currSeating = $('.tyrion').val().split(" ")

    $('.draggable-item').draggable
        stack: '.droppable-item'
        stack: '.draggable-item'
        start: (event, ui) ->
            console.log($(this).parent().attr("id"))
            seat = $(this).closest(".seat").attr("id")-1000;
            currSeating[seat] = 0
            $(this).parent().addClass("droppable-item")
            $(this).parent().droppable
                 #I've tried placing all of the droppable function lines here too. But I'm sure that isn't the correct approach.


    $('.droppable-item').droppable
        drop: (event, ui) ->
            justdragged = $(ui.draggable) 
            kid = justdragged.attr("id")
            seat = $(this).attr("id")-1000
            currSeating[seat] = kid
            $('.tyrion').val(currSeating)
            $(this).append(justdragged.removeAttr('style'))
            $(this).removeClass("droppable-item")

$(document).on('turbolinks:load', ready)

seatingChart.html.erb

<% def makeARow(group) %>
    <div class="row">
        <% group.each do |eyedee| %>
            <% if eyedee and eyedee.to_i > 0 %>
                <div class = "col-md-2 seat" id="<%= @counter %>">
                    <% student = Student.find(eyedee) %>
                    <div class="draggable-item" id="<%= student.id %>">
                        <li id="<%= student.id %>" >
                            <%= "#{student.firstPlusInit}" %>
                        </li>
                    </div>
                </div>
            <% else %>
                <div class = "col-md-2 seat droppable-item" id="<%= @counter %>">
                </div>
            <% end %>
            <% @counter = @counter += 1 %>
        <% end %>
    </div>
<% end %>


<div class = "container-fluid">
    <% @counter = 1000 %>
    <% @seminar.seating.in_groups_of(6).each do |group| %>
        <% makeARow(group) %>
    <% end %>
    <% newgroup = [0,0,0,0,0,0] %>
    <% makeARow(newgroup) %>
</div>

该行

的console.log($(本).parent()ATTR(&#34; ID&#34))

是我试图调试,看看旧座位是否可以成为学生的父母。但是,原来占用的座位都不能通过这条线路登录到控制台。只有在页面加载时空的座位。

提前感谢您的任何见解。

1 个答案:

答案 0 :(得分:0)

在尝试解决这个问题时,我意识到更好的方法是创建一个不是座位的“临时临时区”。当用户将学生放到已经占用的座位上时,旧学生将被转移到临时区域。

我从未弄清楚如何在页面加载后使div可以删除,但现在我不再需要该功能了。似乎有一天其他人会需要的东西。