В моем main.js у меня есть два правила, связанных со ссылками. Следует обрабатывать все ссылки, которые не начинаются с http://, mailto: или #. Он использует load() для замены содержимого в $('#contentMain'). Другой обрабатывает ссылки, начинающиеся с http://, и открывает их в новой вкладке.
$("a:not([href^='http://'],[href^='#'],[href^='mailto:'])").click( function(e) {
console.log('Caught click, loading via AJAX');
var url = $(this).attr("href");
var title = ($(this).attr("title")) ? ': ' + $(this).attr("title") : '';
e.preventDefault();
if(url!=window.location){
window.history.pushState({path:url},title,url);
$('#contentMain').load(url);
document.title = "It's New Orleans" + title;
}
});
$("a[href^='http://']").attr("target","_blank");
Проблема заключается в том, что такие ссылки, как /contact, не запускают первое правило, ЕСЛИ они находятся внутри $('#contentMain') после того, как функция load() заменила содержимое в первый раз, когда они нажал. Если вы нажмете /contact внутри #contentMain во время загрузки /content, то правило будет соблюдено, вы увидите console.log() и т.д.
Так почему же содержимое, замененное функцией load(), не подчиняется правилам в main.js? Эти правила в настоящее время находятся внутри $(document).ready(function(){
, но я также попытался удалить его, чтобы посмотреть, поможет ли это.