Мой код
$('body').on('click','.filter_button a.filter', function(){
ShowCatalogFilter('.filter_button a.filter');
})
function ShowCatalogFilter(e){
e.preventDefault();
e.stopPropagation();
var req = $(e).parents('.catalog-form').serialize();
$.ajax({
dataType:"html",
data: req,
success:function(data){
location.replace(data.replace(/'/g,""))
}
})
};
Ошибка : Uncaught TypeError: e.preventDefault is not a function
Потому что у вас получается e не ивент а селектор, может так
$('.filter_button a.filter').on('click', function(e){
e.preventDefault();
e.stopPropagation();
ShowCatalogFilter('.filter_button a.filter');
})
function ShowCatalogFilter(selector){
var req = $(selector).parents('.catalog-form').serialize();
$.ajax({
dataType:"html",
data: req,
success:function(data){
location.replace(data.replace(/'/g,""))
}
})
};
Вы передаёте строку, а ожидаете что будет объект события, у которого Вы можете отменить реакцию браузера и распространение события.
Можно отменить их в преобработчике, как в ответе @Arsen, а можно забайндить на передачу объекта непосредственно в функцию:
$('.filter_button a.filter').on('click', ShowCatalogFilter.bind(this, '.filter_button a.filter'));
Тогда в функцию попадёт объект события, которое уже можно отменить, прочитать, etc:
function ShowCatalogFilter(selector, e){}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости