How to add a AJAX Language Dropdown that reloads the current page?

How to add a AJAX Language Dropdown that reloads the current page?

I'm trying to write a language dropdown select into my header of my JQM apps. The language is handled by the server side coding (PHP/SQL); data, stored, etc. The server side part works perfectly, but I can not figure out how to handle the ajax events and the existing bindings on the current page. 

I'm seeing multiple events firing off after I select the language more than once. I think it's due to the use of the "pagecreate" which I use when loading the page.

Here's the index pages 'pagecreate' (trimmed down a bit):
  1. $(document).on('pagecreate', '#index', function(event) {

  2.     var page = event.target.id;
  3.     self.consoleLog('pagecreate: #'+page);
  4.     self.bindLanguage(page);

  5.     var apptAnchor = null;
  6.     $('#someListRefreshButton').on('tap', function(e){
  7.         self.buildSomeList();
  8.     });

  9.     // Refresh SomeList
  10.     self.buildSomeList();
  11.     refreshSomeListId = setInterval(function() {
  12.         self.buildSomeList();
  13.     }, 60 * 1000);
  14. });



Here's the language binding code:
  1. bindLanguage: function(page) {

  2.     var self = this;
  3.     self.consoleLog('bindLanguage: #'+page);

  4.     // On change of language select
  5.     $(document).on("change", "select.languageDisplay", function(e) {
  6.         self.settings.lang = e.currentTarget.value;
  7.         self.consoleLog(self.settings.lang);
  8.         $.getJSON(self.settings.base_url + 'someapp/ajax_set_lang/' +
  9.                 encodeURIComponent(self.settings.lang), function(response) {
  10.             if (response.result) {
  11.                 var pageUrl = self.settings.base_url + response.controller + '/' + page;
  12.                 self.consoleLog(pageUrl);
  13.                 // Set new language to ls and settings
  14.                 self.settings.language = response.language;
  15.                 self.lsSet('language', response.language);
  16.                 // Change/Reload Page: http://api.jquerymobile.com/pagecontainer/#method-load
  17.                 $(":mobile-pagecontainer").pagecontainer('change', pageUrl,
  18.                         {allowSamePageTransition: true, showLoadMsg: true, reload: true}
  19.                 );
  20.             }
  21.             //$(document).off("change", "select.languageDisplay");
  22.         });
  23.     });

  24. },

I thought about unbinding (using .off above), but that's not going to solve the problem of the other bindings firing off more than once. I assume I need to move some of the bindings code out of the "pagecreate" and into a "pagecontainershow" - but I'm not sure how to write that code.