... но когда я пытаюсь "внедрить" его в theDiv, я получаю пустую страницу.
Необходимо отменить действие по умолчанию для ссылки;в противном случае ссылка будет следовать.Либо добавьте return false
в конец обработчика кликов, либо добавьте e.preventDefault();
к нему.Например, это:
$('a[rel*=ajax]').click(function(e)
{
ajaxLink = $(this).attr('href')+"?ajax=true";
theDiv = $(this).parents(".post");
$.get(ajaxLink,function(data, textStatus){ $(theDiv).replaceWith(data); });
return false; // This both prevents the default and stops bubbling
});
или
$('a[rel*=ajax]').click(function(e)
{
ajaxLink = $(this).attr('href')+"?ajax=true";
theDiv = $(this).parents(".post");
$.get(ajaxLink,function(data, textStatus){ $(theDiv).replaceWith(data); });
e.preventDefault(); // This just prevents the default, doesn't stop bubbling
});
Отдельно:
В цитируемом коде используются ajaxLink
и theDiv
переменные из родительской области (еслиони не объявлены нигде , они неявные глобальные переменные ).Может быть, вы меняете значение theDiv
после запуска показанного кода, но до завершения вызова ajax?Это означало бы, что когда вызов ajax завершается, он использует новое значение theDiv
, а не старое.
В любом случае, похоже, нет никаких причин, по которым код должен использовать переменные изродительскую область, я бы рекомендовал сделать их локальными для функции:
$('a[rel*=ajax]').click(function(e)
{
var ajaxLink = $(this).attr('href')+"?ajax=true";
// ^-- This is the new bit, the `var`
var theDiv = $(this).parents(".post");
// ^-- And this one
$.get(ajaxLink,function(data, textStatus){ $(theDiv).replaceWith(data); });
});
В качестве отдельной проблемы вы уверены, что хотите replaceWith
(который заменит родитель, который имеет класс post
), а не html
(который будет заменять только его содержимое)?
Нет также причин для вызова $
on *Снова 1042 *;parents
уже возвращает объект jQuery.Итак:
$('a[rel*=ajax]').click(function(e)
{
var ajaxLink = $(this).attr('href')+"?ajax=true";
var theDiv = $(this).parents(".post");
$.get(ajaxLink,function(data, textStatus){ theDiv.replaceWith(data); });
// ^-- No need for $ here
});
И наконец: вы можете взглянуть на функцию load
, которая загружает HTML с сервера и обновляет содержимое элемента с результатом.