From 2b4e562e21bcc8260af714619d97cd58ed95a0be Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 23 Apr 2013 09:51:18 -0400 Subject: [PATCH] committed fix to ajaxify that caused any newly appended anchors to not be ajaxified, also tweaked ajaxify so that it only unbinds its own events instead of clobbering any other events attached to anchors (#futureproof) --- public/src/ajaxify.js | 60 ++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index 364748e83c..5788486f70 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -19,7 +19,7 @@ var ajaxify = {}; content.innerHTML = templates[tpl_url]; exec_body_scripts(content); - + ajaxify.enableAll(); } return true; @@ -28,22 +28,25 @@ var ajaxify = {}; return false; } + ajaxify.enableAll = function() { + $('a').unbind('click', ajaxify.enable).bind('click', ajaxify.enable); + } + + ajaxify.enable = function(ev) { + var url = this.href.replace(rootUrl +'/', ''); + + if (ajaxify.go(url)) { + ev.preventDefault(); + return false; + } + } + $('document').ready(function() { if (!window.history || !window.history.pushState) return; // no ajaxification for old browsers - content = content || document.getElementById('content'); - $('a').unbind('click').bind('click', function(ev) { - var url = this.href.replace(rootUrl +'/', ''); - - if (ajaxify.go(url)) { - ev.preventDefault(); - return false; - } - - - }); + ajaxify.enableAll(); }); function exec_body_scripts(body_el) { @@ -54,27 +57,26 @@ var ajaxify = {}; // Argument body_el is an element in the dom. function nodeName(elem, name) { - return elem.nodeName && elem.nodeName.toUpperCase() === - name.toUpperCase(); + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); }; function evalScript(elem) { - var data = (elem.text || elem.textContent || elem.innerHTML || "" ), - head = document.getElementsByTagName("head")[0] || - document.documentElement, - script = document.createElement("script"); - - script.type = "text/javascript"; - try { - // doesn't work on ie... - script.appendChild(document.createTextNode(data)); - } catch(e) { - // IE has funky script nodes - script.text = data; - } + var data = (elem.text || elem.textContent || elem.innerHTML || "" ), + head = document.getElementsByTagName("head")[0] || + document.documentElement, + script = document.createElement("script"); + + script.type = "text/javascript"; + try { + // doesn't work on ie... + script.appendChild(document.createTextNode(data)); + } catch(e) { + // IE has funky script nodes + script.text = data; + } - head.insertBefore(script, head.firstChild); - head.removeChild(script); + head.insertBefore(script, head.firstChild); + head.removeChild(script); }; // main section of function