e.preventDefault() почему ошибка?

327
18 марта 2017, 01:42

Мой код

$('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

Answer 1

Потому что у вас получается 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,""))
       }
     })
   };
Answer 2

Вы передаёте строку, а ожидаете что будет объект события, у которого Вы можете отменить реакцию браузера и распространение события.

Можно отменить их в преобработчике, как в ответе @Arsen, а можно забайндить на передачу объекта непосредственно в функцию:

$('.filter_button a.filter').on('click', ShowCatalogFilter.bind(this, '.filter_button a.filter'));

Тогда в функцию попадёт объект события, которое уже можно отменить, прочитать, etc:

function ShowCatalogFilter(selector, e){}
READ ALSO
Как динамическому блоку изменить цвет?

Как динамическому блоку изменить цвет?

У меня не изменяет цвет блока

409
Рамки(border) у крайних и соседних элементов

Рамки(border) у крайних и соседних элементов

Здравствуйте, подскажите способ сделать также?: http://refillsbourbon

372
Как сделать фон на всю высоту

Как сделать фон на всю высоту

При уменьшении экрана, появляется вертикальная прокрутка, блок заполняется по высоте на 100% окна браузера, но при скроллинге блок поднимается...

323
Pixel Perfect верстка [дубликат]

Pixel Perfect верстка [дубликат]

На данный вопрос уже ответили:

407