У меня есть связанное изображение, используя Handlebars.js со следующей разметке:e.preventDefault(); Не работает в Firefox
<a href="#" class="clicker" onclick="toggle_visibility('details-{{@index}}');change_icon('img-{{@index}}');">
<img class="reveal" id="img-{{@index}}" src="img/list-icon.svg" alt="reveal" />
</a>
с соответствующим JavaScript с использованием Jquery:
function toggle_visibility(id) {
var e = document.getElementById(id);
if ($(e).is(":hidden")) {
$(e).slideDown("fast");
} else {
$(e).slideUp("fast");
}
e.preventDefault();
}
function change_icon(id) {
var e = document.getElementById(id);
var src = $(e).attr('src');
if (src == "img/list-icon.svg") {
$(e).attr('src',"img/x-icon.svg");
} else {
$(e).attr('src',"img/list-icon.svg");
}
e.preventDefault();
}
Это отлично работает в Chrome и Safari, но в Firefox , хотя обе функции выполняют то, что они должны делать, экран переходит в верхнюю часть страницы при щелчке, и я получаю следующую ошибку:
TypeError: e.preventDefault is not a function
Я также пробовал return false;
, который не отображает ошибки, но все же приносит страницу вверху. И я не знаю, как избежать использования встроенного Javascript в моем HTML, поскольку я использую Handlebars.
Как я могу решить эту ошибку?
'e' является элементом., А не событием. – SLaks
Зачем вам это нужно? Что вы пытаетесь остановить? и да, как сказал Слакс, e есть и элемент, а не событие – Bindrid