Side navigation
#2096 closed bug (fixed)
Opened December 27, 2007 07:50AM UTC
Closed December 27, 2007 01:31PM UTC
ui.mouse: appendTo broken
Reported by: | wehriam | Owned by: | paul |
---|---|---|---|
Priority: | major | Milestone: | 1.2.2 |
Component: | ui | Version: | 1.2.1 |
Keywords: | mouse draggable | Cc: | |
Blocked by: | Blocking: |
Description
Lines 141-142 in UI mouse in rev 4311:
if(o.appendTo == 'parent') { // Let's see if we have a positioned parent var cp = a.parentNode; while (cp) { if(cp.style && ($(cp).css('position') == 'relative' || $(cp).css('position') == 'absolute')) { o.pp = cp; o.po = $(cp).offset(); o.ppOverflow = !!($(o.pp).css('overflow') == 'auto' || $(o.pp).css('overflow') == 'scroll'); //TODO! break; } cp = cp.parentNode ? cp.parentNode : null; }; if(!o.pp) o.po = { top: 0, left: 0 }; }
If "appendTo" is specified (for example when using a draggable) the this.options.po object goes unset. This causes problems in ui.draggable and likely elsewhere.
if(o.appendTo == 'parent') { // Let's see if we have a positioned parent var cp = a.parentNode; while (cp) { if(cp.style && ($(cp).css('position') == 'relative' || $(cp).css('position') == 'absolute')) { o.pp = cp; o.po = $(cp).offset(); o.ppOverflow = !!($(o.pp).css('overflow') == 'auto' || $(o.pp).css('overflow') == 'scroll'); //TODO! break; } cp = cp.parentNode ? cp.parentNode : null; }; if(!o.pp) o.po = { top: 0, left: 0 }; } else { var cp = $(o.appendTo)[0]; while (cp) { if(cp.style && ($(cp).css('position') == 'relative' || $(cp).css('position') == 'absolute')) { o.pp = cp; o.po = $(cp).offset(); o.ppOverflow = !!($(o.pp).css('overflow') == 'auto' || $(o.pp).css('overflow') == 'scroll'); //TODO! break; } cp = cp.parentNode ? cp.parentNode : null; }; if(!o.pp) o.po = { top: 0, left: 0 }; }
This seems to fix the problem. Sorry - for the time being I am not familiar enough with the codebase to give a more elegant solution.
You're absolutely right. Thanks for pointing it out. It's fixed in the upcoming version.