diff --git a/format.js b/format.js
index ab865fc34f1c11bad8e231f9d0f7a534de428034..0eeeafa14c750619b771ca5bdaa9813003c839e2 100644
--- a/format.js
+++ b/format.js
@@ -42,7 +42,10 @@ M.course.format.swap_sections = function(Y, node1, node2) {
         SECTIONADDMENUS: 'section_add_menus'
     };
     var sectionlist = Y.Node.all('.' + CSS.COURSECONTENT + ' ' + M.course.format.get_section_selector(Y));
-    sectionlist.item(node1).one('.' + CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.' + CSS.SECTIONADDMENUS));
+    // Swap the non-ajax menus, noting these are not always present (depends on theme and user prefs).
+    if (sectionlist.item(node1).one('.' + CSS.SECTIONADDMENUS)) {
+        sectionlist.item(node1).one('.' + CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.' + CSS.SECTIONADDMENUS));
+    }
 };
 
 M.course.format.process_sections = function(Y, sectionlist, response, sectionfrom, sectionto) {