diff --git js/ajax.js js/ajax.js
index 00bcdd7..8991347 100644
--- js/ajax.js
+++ js/ajax.js
@@ -92,7 +92,7 @@ Drupal.Views.Ajax.ajaxResponse = function(data) {
 
   // Go through the 'add' array and add any new content we're instructed to add.
   if (data.add) {
-    for (id in data.add) {
+    for (var id = 0; id < data.add.length; id++) {
       var newContent = $(id).append(data.add[id]);
       Drupal.attachBehaviors(newContent);
     }
@@ -100,7 +100,7 @@ Drupal.Views.Ajax.ajaxResponse = function(data) {
 
   // Go through the 'replace' array and replace any content we're instructed to.
   if (data.replace) {
-    for (id in data.replace) {
+    for (var id = 0; id < data.replace.length; id++) {
       $(id).html(data.replace[id]);
       Drupal.attachBehaviors(id);
     }
@@ -108,7 +108,7 @@ Drupal.Views.Ajax.ajaxResponse = function(data) {
 
   // Go through and add any requested tabs
   if (data.tab) {
-    for (id in data.tab) {
+    for (var id = 0; id < data.tab.length; id++) {
       // Retrieve the tabset instance by stored ID.
       var instance = Drupal.Views.Tabs.instances[$('#views-tabset').data('UI_TABS_UUID')];
       instance.add(id, data.tab[id]['title'], 0);
diff --git js/base.js js/base.js
index 1c65d9c..c6a6c35 100644
--- js/base.js
+++ js/base.js
@@ -75,7 +75,7 @@ Drupal.Views.parseQueryString = function (query) {
     query = query.substring(pos + 1);
   }
   var pairs = query.split('&');
-  for(var i in pairs) {
+  for (var i = 0; i < pairs.length; i++) {
     if (typeof(pairs[i]) == 'string') {
       var pair = pairs[i].split('=');
       // Ignore the 'q' path argument, if present.
@@ -126,7 +126,7 @@ Drupal.Views.getPath = function (href) {
     href = href.substring(3, href.length);
   }
   var chars = ['#', '?', '&'];
-  for (i in chars) {
+  for (var i = 0; i < chars.length; i++) {
     if (href.indexOf(chars[i]) > -1) {
       href = href.substr(0, href.indexOf(chars[i]));
     }
diff --git js/dependent.js js/dependent.js
index b8ac4c8..fea8c71 100644
--- js/dependent.js
+++ js/dependent.js
@@ -40,7 +40,7 @@ Drupal.Views.dependent.inArray = function(array, search_term) {
 
 Drupal.Views.dependent.autoAttach = function() {
   // Clear active bindings and triggers.
-  for (i in Drupal.Views.dependent.activeTriggers) {
+  for (var i = 0; i < Drupal.Views.dependent.activeTriggers.length; i++) {
     jQuery(Drupal.Views.dependent.activeTriggers[i]).unbind('change');
   }
   Drupal.Views.dependent.activeTriggers = [];
@@ -52,13 +52,14 @@ Drupal.Views.dependent.autoAttach = function() {
   }
 
   // Iterate through all relationships
-  for (id in Drupal.settings.viewsAjax.formRelationships) {
+  for (var id = 0; id < Drupal.settings.viewsAjax.formRelationships.length; id++) {
+
 
     // Drupal.Views.dependent.activeBindings[id] is a boolean,
     // whether the binding is active or not.  Defaults to no.
     Drupal.Views.dependent.activeBindings[id] = 0;
     // Iterate through all possible values
-    for(bind_id in Drupal.settings.viewsAjax.formRelationships[id].values) {
+    for (var bind_id = 0; bind_id < Drupal.settings.viewsAjax.formRelationships[id].values.length; bind_id++) {
       // This creates a backward relationship.  The bind_id is the ID
       // of the element which needs to change in order for the id to hide or become shown.
       // The id is the ID of the item which will be conditionally hidden or shown.
@@ -114,7 +115,7 @@ Drupal.Views.dependent.autoAttach = function() {
         var changeTrigger = function() {
           var val = getValue(bind_id, trigger_id);
 
-          for (i in Drupal.Views.dependent.bindings[bind_id]) {
+          for (var i = 0; i < Drupal.Views.dependent.bindings[bind_id]; i++) {
             var id = Drupal.Views.dependent.bindings[bind_id][i];
 
             // Fix numerous errors
