Bug Tracker

Ticket #2704 (closed bug: fixed)

Opened 8 months ago

Last modified 7 months ago

ui.droppable.js and removing droppables

Reported by: colin.johnson Assigned to: braeker
Type: bug Priority: major
Milestone: 1.2.4 Component: ui
Version: 1.2.3 Keywords:
Cc: Needs: Review

Description

I have come across an error when trying to remove a droppable when I have finished with it. I am allowing an <li> element to be dragged onto another <li> element that is a droppable.

If I setup something like this:

$(this).droppable({
	drop: function(ev, ui) {
		// move the dragging element before the droppable
		$(ui.draggable).insertBefore($(this));
		$(REFERENCE_TO_A_DROPPABLE_LI_ELEMENT).remove();
	}
});

I get the following error: this.items has no properties

This is raised on line 236:

if (!this.item.options.disabled && $.ui.intersect(draggable, this, this.item.options.tolerance))

and line 239:

if (!this.item.options.disabled && this.item.options.accept.call(this.item.element,(draggable.currentItem || draggable.element))) {

If I check that this.items exists then the error can be prevented

if (this.item && !this.item.options.disabled && $.ui.intersect(draggable, this, this.item.options.tolerance))

However, I have not got any knowledge of the impact of this change, and tried to actually resolve it without this change with no success. I think some of the issue is around now having a bind on the remove event (line 54) which means the removed elements are correctly taken out of the $.ui.ddmanager.droppables array but perhaps they are still referenced in the array loop starting on line 234?

I have attached an example of the failure, if you try and drag "Node 2" into the very top land area, it will raise the error.

Attachments

ui.droppable.zip (41.7 kB) - added by colin.johnson 8 months ago.
Files for reproducing the error

Change History

Changed 8 months ago by colin.johnson

Files for reproducing the error

in reply to: ↑ description ; follow-up: ↓ 2   Changed 8 months ago by colin.johnson

Sorry, this should not be listed as a 'Major' priority...can't see how to change that now

in reply to: ↑ 1   Changed 8 months ago by colin.johnson

Replying to colin.johnson:

Sorry, this should not be listed as a 'Major' priority...can't see how to change that now

Sorry, accidentally submitted this before changing the component to 'ui' as well.

  Changed 8 months ago by davidserduke

  • owner set to paul
  • component changed from core to ui

  Changed 7 months ago by paul

  • owner changed from paul to braeker

  Changed 7 months ago by paul

  • status changed from new to closed
  • resolution set to fixed

I don't know the cause, but I implemented a simple check wether this.options is available in the drop. This should fix it.

Note: See TracTickets for help on using tickets.