@raiderek an excellent choice sir.
la cadena que pasas a metodo load te permite especificar que parte queres cargar del documento html. Es decir podes tener un documento HTML completo en menu.html y cargar solamente el contenido de algun div pasando un selector. Por ejemplo: $( '#target' ).load( 'menu.html #nav' );
Los iframes te pueden sacar de aguas, pero nunca los recomendaria... a menos que te interese soportar navegadores sin soporte Ajax que te permita cargar el HTML dinamicamente como lo has hecho aqui. El problema con los iframes es que tienen su propio browsing context lo que significa que cada iframe tienen su propio objeto global por ende propio set de constructores, esto no puede tener mucha importancia si sos diseñador o entusiasta a desarrollador web, pero cuando escribís aplicaciones web no triviales la complejidad al momento de manejar eventos y comparar objetos aumenta. TLDR: los frames no son malos, pero es necesario evaluar sus costos.
A parte juntar differentes secciones desde el lado del servidor y regresar todo junto en un documento html, existen herramientas como Dreamweaver que te permiten crear templates. Otra opción, lo que hago en muchos de mis projectos, es crear un build script que junte differentes partes y deploy la version final de tu webapp - esto puede sonar overkill si estas haciendo proyectos pequeños.