Показать сообщение отдельно
  #2 (permalink)  
Старый 10.02.2014, 07:09
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от 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 соответственно тоже.
__________________
В личку только с интересными предложениями

Последний раз редактировалось danik.js, 10.02.2014 в 07:12.
Ответить с цитированием