2016-01-30 3 views
2

У меня есть сценарий jquery, который пытается проверить, нажал ли пользователь изображение с определенным классом. Изображение на вопрос будет выглядеть так:Обнаружение щелкните по изображению с классом

<img src='media/voteup.png' class='upvote selected' /> 

Мой скрипт пытается связать с щелчком на этом изображении с этим кодом:

$(document).ready(function(){ 
    $(".upvote").click(function(){ 
     console.log("clicked"); 
     if ($(this).hasClass("selected")){ 
      // does stuff 
     } else{ 
      // does stuff 
     } 
    }); 
}); 

Однако, я не получаю никаких сообщений консоли. Я пробовал связывание с:

$(".upvote").on("click", ".upvote", function(){...}); 

Но это не сработало. Мне было интересно, что я делаю что-то неправильно.

Заранее благодарен!

Edit:

Оказывается, что источник проблемы в том, что я действительно тупо пытался связать в файле JS с HREF вместо СРК. Тьфу мне нужно больше сна: P

+0

Ваш код работает отлично на этой скрипке здесь: https://jsfiddle.net/ppLocuac/, вы получаете какие-либо ошибки на консоли? – stark

+0

Что такое окружающий html? Кроме того, есть ли у вас какие-либо другие обработчики событий, которые могут отменить распространение событий? Попробуйте воспроизвести эту проблему на jsfiddle. –

+0

Спасибо за помощь! Однако выясняется, что источником проблемы было то, что я действительно глупо пытался связать в js-файле с href вместо src. Упс. – JThistle

ответ

2

Try использовать событие делегация on(), например:

$("body").on("click", ".upvote", function(){ 
    console.log("clicked"); 

    if ($(this).hasClass("selected")){ 
      // does stuff 
    } else{ 
      // does stuff 
    } 
}); 

$(document).ready(function(){ 
 
    $(".upvote").click(function(){ 
 
    alert("clicked"); 
 
    if ($(this).hasClass("selected")){ 
 
     // does stuff 
 
    } else{ 
 
     // does stuff 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<img src='media/voteup.png' class='upvote selected' />

0

Попробуйте

$("document").on("click", ".upvote", function(){...}); 
+0

'document' также будет работать, но слушать' body' является более эффективным. –

1
var e; 
e=$(".upvote"); 
e.click=function() 

{ 
    console.log("clicked"); 
    if (e.ClassName=="selected"){ 
     // does stuff 
    } else{ 
     // does stuff 
} 

}

Смежные вопросы