   _handleDragover: normalizeEventCallback (e, dataTransfer) ->
     if @_shouldAccept(e, dataTransfer)
       e.preventDefault()
-      currentTarget = e.currentTarget
-      if currentTarget != @placeholder
+
+      eventTarget = e.target
+
+      # This is awkward but it is important to bind the event to the root el
+      # without any selector filtering so you can drop on a header or a footer
+      if @_elementMatchesItemSelector(eventTarget)
+        draggedOver = eventTarget
+      else if element = @_parentOfElementThatMatchesItemSelector(eventTarget)
+        draggedOver = element
+
+      if draggedOver && draggedOver != @placeholder
         directionals = if @options.direction == "vertical"
           {
             before: "top"


  _boot: ->
    unless @isBound
      @$el.on "drop", @options.itemSelector, $.proxy(this, "_handleDrop")
      @$el.on "dragleave", $.proxy(this, "_handleDragleave")
      @isBound = true

  _cleanUp: ->
    @$el.off "drop", @options.itemSelector, @_handleDrop
    @$el.off "dragend", @options.itemSelector, @_handleDragend
    @$el.off "dragleave", @_handleDragleave
    @isBound = false


  enable: ->
    unless @enabled
      @$el.on "dragstart", @options.itemSelector, $.proxy(this, "_handleDragstart")
      @$el.on "dragover", $.proxy(this, "_handleDragover")
      @enabled = true

  disable: ->
    if @enabled
      @$el.off "dragstart", @options.itemSelector, @_handleDragstart
      @$el.off "dragover", @_handleDragover
      @enabled = false
      $(@placeholder).detach() if @placeholder

