Вашему обработчику кликов нужны две вещи: protectDefault () и метод AJAX, такой как jQuery $ .ajax () или $ .get ().
protectDefault () предотвратит действие по умолчанию для навигации постраница к значению href.Добавьте параметр к событию click, чтобы представить событие, и для этого вызовите warnDefault ().
$. Ajax () или $ .get () выполнят действие по достижению URL-адреса, чтобы отдать голос.Лично я предпочитаю $ .ajax (), он выполняет GET-запрос по умолчанию, но вы можете установить тип POST.Есть много других доступных опций, таких как dataType (json, text, xml и т. Д.).Функции успеха и ошибок также просты в реализации.
JavaScript:
$('ul.list1 li a').click(function(e) {
e.preventDefault();
// cache this for scope change
var $this = $(this);
$.ajax({
url: this.href,
success: function() {
// your original JavaScript here
$('a.button1').removeClass('active');
$this.addClass('active'); // no need for .parent().find()
$('div#content div.comments').fadeIn('slow');
var col1Height = $("div#left-pannel").height() - 63;
$('div#sidebar').css("min-height", col1Height);
},
error: function() {
alert('Sorry, your vote was not successful.');
}
});
});
Я также изменил способ вызова addClass () в своем коде.Во-первых, нам нужно было кэшировать $ (this), так как «this» больше не будет ссылаться на элемент, по которому щелкнули, в функции успеха.Во-вторых, на основе предоставленного вами HTML-элемента, который вам нужно найти, «a.button», - это элемент, по которому щелкнули.Если это так, мы можем удалить .parent (). Find ('a.button') и просто работать с $ this напрямую.
Подробнее о jQuery.ajax (): http://api.jquery.com/jQuery.ajax/
Не стесняйтесь задавать вопросы о коде.Я надеюсь, что это помогает!