#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);
Работает только событие нажатия кнопки. Еще раз спасибо за ваш совет