Проблемы с разработкой ajax

#javascript #jquery #ajax

#javascript #jquery #ajax

Вопрос:

Заранее прошу прощения за мой плохой английский. У меня есть сайт в разработке http://plast-pak.esy.es / при html-кодировании с помощью Ajax я вызвал html-страницу на свою главную страницу, и слайдер скользит вверх.

 <button onclick="clickAlert();" class="clickDown">?????????</button>

<script>

    function clickAlert() {
        $(this).click(function(){
            $.ajax({
                type: 'GET',
                dataType: 'html',
                url: 'item-1.html',
                success: function(response) {
                    $('#projectInformation').html(response).slideDown('fast');
                }
            });
            $('.front-page > #main_wrap').slideUp(3000);
            $('.front-page > #menuBar').slideUp(3000);
        });
    }

</script>
  

Была страница обратного вызова с информацией. У нее есть своя кнопка, ведьма должна закрыть эту страницу и вернуть главную страницу.

 <button onclick="clickAbort();" class="clickUp">????????? ?? ???????</button>

<script>

    function clickAbort() {
        $(this).click(function(){
            $('.front-page > #main_wrap').slideDown(3000);
            $('.front-page > #menuBar').slideDown(3000);
            $('#projectInformation .full-node').remove();
        });
    }

</script>
  

В конце концов, все работает, как работает. Все ужасно и очень некорректно. Пожалуйста, помогите мне понять, почему все это так работает. Заранее спасибо.

Комментарии:

1. Вероятно, лучше подходит для codereview ?

2. С какой частью у вас возникли трудности. «Все ужасно и очень неправильно» — такое плохое описание. Как насчет «Я ожидал A, но B произошло»

3. Код не имеет смысла $ (this) — это объект window, и вы добавляете к нему событие щелчка??

4. @MLeFevre это не материал для обзора кода…

Ответ №1:

Удалить

$(this).click(function(){

из clickAlert и clickAbort . Они уже являются обработчиками кликов.

Кроме этого, вам нужно будет более конкретно указать «ужасный и очень неправильный».

Ответ №2:

$(this).click() используется для настройки обработчика события нажатия кнопки, и вы уже делаете это, установив атрибут onclick в вашей разметке. Обычный способ сделать это — присвоить кнопке идентификатор, чтобы вы могли устанавливать события в коде javascript:

 <button id="alert" class="clickDown">Подробнее</button>
<script type="text/javascript">
$("#alert").click(function(){
    $.ajax({
        type: 'GET',
        dataType: 'html',
        url: 'item-1.html',
        success: function(response) {
             $('#projectInformation').html(response).slideDown('fast');
        }
    });
    $('.front-page > #main_wrap').slideUp(3000);
    $('.front-page > #menuBar').slideUp(3000);
});
</script>
  

Ответ №3:

Спасибо всем за ваши советы. Проблема была решена следующим образом:

 <button id="alert" onclick="clickAlert();" class="clickDown">Подробнее</button>
    function clickAlert() {
                $.ajax({
                    type: 'GET',
                    dataType: 'html',
                    url: 'item-1.html',
                    success: function(response) {
                        ...
                    }
                });
                ...
        }
  

по какой-либо причине слайдер не указан, используйте следующий код

 $("#alert").click(function(){
    $.ajax({
        type: 'GET',
        dataType: 'html',
        url: 'item-1.html',
        success: function(response) {
             $('#projectInformation').html(response).slideDown('fast');
        }
    });
    $('.front-page > #main_wrap').slideUp(3000);
    $('.front-page > #menuBar').slideUp(3000);
  

Работает только событие нажатия кнопки. Еще раз спасибо за ваш совет