Обновляется окно при клике, как убрать?
Есть скрипт
function shops(elt) {
$('#'+$(elt).data('id')).fadeIn();
};
$(function($) {
$('.popup-order').find('.close').on('click',function() {
$('.popup-order').fadeOut();
});
$('.popup-order').on('click',function(e) {
if ($(e.target).hasClass('popup-order')) $(this).fadeOut();
});
});
Он привязан к ссылке:
<a href="" class="close" title="Закрыть"></a>
При клике на ссылку в появившемся окне происходит обновление страницы и окно закрывается. Необходимо убрать обновление страницы при клике.
- Навесить return false не сработало
- Убрать href отключает полностью ссылку, как и если прописать ссылке ##
- Заменить ссылку на span не работает
- Навесить onclick сразу в ссылке с отменой не работает
- Указать e.preventDefault(); не работает
- Указать javascript:void(0) не работает
Ответы (1 шт):
Вы не дали полный пример кода, и остаётся только гадать, почему у вас не работают решения, которые обязаны работать. Одной из причин, по которой e.preventDefault();
не работает, может быть то, что событие не передается в функцию обработчика событий или оно не корректно определяется в вашем коде.
Вот примерное решение, на основе вашего кода:
$(function($) {
$('.popup-order').find('.close').on('click', function(e) {
e.preventDefault();
$('.popup-order').fadeOut();
});
$('.popup-order').on('click', function(e) {
if ($(e.target).hasClass('popup-order')) {
e.preventDefault();
$(this).fadeOut();
}
});
});
function shops(elt) {
elt.preventDefault();
var id = $(elt.target).data('id'); // Если elt - это event объект, иначе используйте $(elt).data('id')
$('#' + id).fadeIn();
};
Если вы используете onclick="shops(this);"
в HTML, вам нужно будет изменить способ передачи события и обработки, возможно, передавать event в shops функцию и обрабатывать его аналогично.