Я довольно новичок в Javascript, и я пытаюсь получить эффект «по щелчку», когда щелчок по увеличенному изображению снова уменьшает его. Расширение происходит путем замены эскиза исходным изображением. Я также хочу получить слайд-шоу, используя изображения из моей базы данных позже.Javascript onclick event firing для id, но не для класса
Чтобы сделать это, я проверил, где я заменю идентификатор, который указывает, что расширение возможно для класса, и также использую глобальную переменную, чтобы я мог отслеживать URL-адрес, который я использую. Не уверен, что это лучшая практика, но я не нашел лучшего решения.
Первая часть работает нормально, мое изображение меняет ситуацию без проблем, значения также обновляются в соответствии с оператором 'alert'. Однако вторая часть, та, которая с классом никогда не запускается.
Что я делаю неправильно (кроме очень вероятных многочисленных плохих практик)?
Если вместо изменения класса я меняю идентификатор напрямую (заменяя .image_enlarged на #image_enlarged и т. Д.), Он, кажется, вызывает первую функцию, с идентификатором, но выводит обновленный идентификатор, что скорее сбивает с толку.
var old_url = "";
$(function(){
$('#imageid').on('click', function()
{
if($(this).attr('class')!='image_enlarged'){
old_url = $(this).attr('src');
var new_url = removeURLPart($(this).attr('src'));
$(this).attr('src',new_url); //image does enlarge
$(this).attr('class',"image_enlarged");
$(this).attr('id',"");
alert($(this).attr('class')); //returns updated class
}
});
$('.image_enlarged').on('click', function(){
alert(1); //never triggered
$(this).attr('src',old_url);
$(this).attr('class',"");
$(this).attr('id',"imageid");
});
});
function removeURLPart(e){
var tmp = e;
var tmp1 = tmp.replace('thumbnails/thumbnails_small/','');
var tmp2 = tmp1.replace('thumbnails/thumbnails_medium/','');
var tmp3 = tmp2.replace('thumbnails/thumbnails_large/','');
return tmp3;
}
Что касается HTML, это очень просто:
<figure>
<img src = "http://localhost/Project/test/thumbnails/thumbnails_small/image.jpg" id="imageid" />
<figcaption>Test + Price thing</figcaption>
</figure>
<script>
document.write('<script src="js/jquery-1.11.1.min.js"><\/script>');
</script>
<script type="text/javascript" src="http://localhost/Project/js/onclickenlarge.js"></script>
HTML, вставили оленья кожа содержит изображение, содержащее класс? – PieterSchool
tag image_enlarged с классом, не найденным в вашем html! –
Erm, указанный тег должен быть добавлен javascript после первого щелчка, поэтому он не находится в html. – spliblib