Сообщение от wisma
|
jQuery.noConflict();
|
Сайт на джумле чтоли? Выкинь нафиг jQuery - глупо юзать библиотеку из 10000 строк ради пары функций..
Код на чистом js:
// оборачиваем код в функцию, дабы не засерать глобальную область переменными
(function(){
// коллекция элементов-регионов
var options = document.querySelectorAll('a');
// обработчик события click
var onclick = function() {
// обработчик вызывается в контексте элемента, на котором он зарегистрирован, то есть this указывает на сам элемент
var id = this.getAttribute('id');
// создаем объект для ajax-запроса
var request = new XMLHttpRequest();
// настраиваем на GET-запрос
request.open('GET', '/pop.php?loc=' + id);
// навешиваем обработчик "смены состояний". тут бы лучше подошел обработчик onload, но у него проблемы с кроссбраузерностью
request.onreadystatechange = function() {
// ожидаем завершения запроса
// 4 - это значение константы request.DONE, означающей, что запрос завершен. опять же, в IE8 константы этой нет, так что пишем тупо четверку
if (this.readyState != 4)
return;
// сервак должен ответить 200 OK, иначе считаем за ошибку
if (this.status !== 200)
return alert('Ошибка при запросе!');
// парсим JSON-ответ. Может бросить исключение при невалидном значении.
var data = JSON.parse(this.responseText);
// если ок, то перезагружаем страницу
if (data.ok)
location.reload();
};
request.send(null);
};
for (var i = 0; i < options.length; i++) {
// вешаем обработчик события click на все элементы
options[i].onclick = onclick;
}
})();
Сообщение от wisma
|
с js у меня большие проблемы
|
К каждой строчки добавил комментарии. Спрашивай че не понятно.
Да, поменяй id на data-id, и в строчке с getAttribute соответственно тоже.