diff options
author | Andreas Gohr <andi@splitbrain.org> | 2012-10-12 08:07:28 -0700 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2012-10-12 08:07:28 -0700 |
commit | 69e96c5fa17b3fa0a402c381b4f98055e66479b0 (patch) | |
tree | 1cc6edfd50054fe4a89ea94e2b58e69b12251f69 /lib/scripts/page.js | |
parent | db770f698b9d190dce389ce0a29b84eaa333dff8 (diff) | |
parent | 870c8a4b77dd7c2cfdc14045f8604b5bbf34c01e (diff) | |
download | rpg-69e96c5fa17b3fa0a402c381b4f98055e66479b0.tar.gz rpg-69e96c5fa17b3fa0a402c381b4f98055e66479b0.tar.bz2 |
Merge pull request #135 from Chris--S/master
Proposed fix for #2541
Diffstat (limited to 'lib/scripts/page.js')
-rw-r--r-- | lib/scripts/page.js | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/lib/scripts/page.js b/lib/scripts/page.js index b8e83cb0c..4ab0bf9b5 100644 --- a/lib/scripts/page.js +++ b/lib/scripts/page.js @@ -22,24 +22,27 @@ dw_page = { jQuery('form.btn_secedit') .mouseover(function(){ var $tgt = jQuery(this).parent(), - nr = $tgt.attr('class').match(/(\s+|^)editbutton_(\d+)(\s+|$)/)[2]; - - // Walk the DOM tree up (first previous siblings, then parents) - // until boundary element - while($tgt.length > 0 && !$tgt.hasClass('sectionedit' + nr)) { - // go down when the sectionedit begin marker is below $tgt - if ($tgt.find('.sectionedit' + nr).length > 0) { - $tgt = $tgt.children().last(); - } else { - // $.last gives the DOM-ordered last element: - // prev if present, else parent. - $tgt = $tgt.prev().add($tgt.parent()).last(); - } - $tgt.addClass('section_highlight'); + nr = $tgt.attr('class').match(/(\s+|^)editbutton_(\d+)(\s+|$)/)[2], + $highlight = jQuery(), // holder for elements in the section to be highlighted + $highlightWrap = jQuery('<div class="section_highlight"></div>'); // section highlight wrapper + + // Walk the dom tree in reverse to find the sibling which is or contains the section edit marker + while($tgt.length > 0 && !($tgt.hasClass('sectionedit' + nr) || $tgt.find('.sectionedit' + nr).length)) { + $tgt = $tgt.prev(); + $highlight = $highlight.add($tgt); } + // insert the section highlight wrapper before the last element added to $highlight + $highlight.filter(':last').before($highlightWrap); + // and move the elements to be highlighted inside the section highlight wrapper + $highlight.detach().appendTo($highlightWrap); }) .mouseout(function(){ - jQuery('.section_highlight').removeClass('section_highlight'); + // find the section highlight wrapper... + var $highlightWrap = jQuery('.section_highlight'); + // ...move its children in front of it (as siblings)... + $highlightWrap.before($highlightWrap.children().detach()); + // ...and remove the section highlight wrapper + $highlightWrap.detach(); }); }, |