Skip to content

Commit

Permalink
Fix popup DOM element sharing, simplify event handling
Browse files Browse the repository at this point in the history
  • Loading branch information
adrianheine committed Aug 19, 2011
1 parent 99e7bfd commit eea9121
Showing 1 changed file with 7 additions and 19 deletions.
26 changes: 7 additions & 19 deletions lib/scripts/page.js
Expand Up @@ -50,36 +50,24 @@ dw_page = {
*/
insituPopup: function(target, popup_id) {
// get or create the popup div
var $fndiv = jQuery('#popup_id');
var $fndiv = jQuery('#' + popup_id);

// popup doesn't exist, yet -> create it
if(!$fndiv.length){
if($fndiv.length === 0){
$fndiv = jQuery(document.createElement('div'))
.attr('id', popup_id)
.addClass('insitu-footnote JSpopup')
.mouseout(function(e){
// autoclose on mouseout - ignoring bubbled up events
//FIXME can this made simpler in jQuery?
var p = e.relatedTarget || e.toElement;
while (p && p !== this) {
p = p.parentNode;
}
if (p === this) {
return;
}
jQuery(this).hide();
});

.mouseleave(function () {jQuery(this).hide();});
jQuery('div.dokuwiki:first').append($fndiv);
}

$fndiv.position({
// position() does not support hidden elements
$fndiv.show().position({
my: 'left top',
at: 'left center',
of: target
});
}).hide();

$fndiv.hide();
return $fndiv;
},

Expand All @@ -90,7 +78,7 @@ dw_page = {
* @author Chris Smith <chris@jalakai.co.uk>
*/
footnoteDisplay: function(e){
var $fndiv = dw_page.insituPopup(e.target, 'insitu__fn');
var $fndiv = dw_page.insituPopup(this, 'insitu__fn');

// locate the footnote anchor element
var $a = jQuery("#fn__" + e.target.id.substr(5));
Expand Down

0 comments on commit eea9121

Please sign in to comment.