Javascript jquery投票系统映像不可单击

Javascript jquery投票系统映像不可单击,javascript,jquery,html,Javascript,Jquery,Html,我试图实现一个类似stackoverflow的投票系统,我有类似的东西: Html: 图像不可点击。为什么 谢谢你的支票好像倒了,你有: if($(this).hasClass('selected')) { 这(至少看起来)是在检查它是否已经有投票权,因此鉴于您的代码的其余部分,它应该是反向检查…当前您将在第一次单击时调用/remove\u vote/(当没有投票权时,至少没有该方向),所以只需执行以下操作: if(!$(this).hasClass('selected')) { 也要考虑的

我试图实现一个类似stackoverflow的投票系统,我有类似的东西:

Html:

图像不可点击。为什么


谢谢你的支票好像倒了,你有:

if($(this).hasClass('selected')) {
这(至少看起来)是在检查它是否已经有投票权,因此鉴于您的代码的其余部分,它应该是反向检查…当前您将在第一次单击时调用
/remove\u vote/
(当没有投票权时,至少没有该方向),所以只需执行以下操作:

if(!$(this).hasClass('selected')) {

也要考虑的是,既然你已经点击了<代码> <代码>,你可以只保留它的引用,不必再去寻找它,像这样:

此外,对于答案多于几个的情况,最好使用以下选项:

$(function() {
  $('div.answer img.vote').click(function() {
    var id = $(this).closest('div.answer').attr('id').split('_').pop(),
      vote_type = $(this).hasClass('up') ? 'up' : 'down',
      self = this;
    if(!$(this).hasClass('selected')) {
      $.post('/vote/', {id: id, type: vote_type}, function(json) {
        if(json.success == 'success') {
          self.src = 'vote_' + vote_type + '_selected.png';
          $(self).addClass('selected').siblings('div.score').html(json.score);
        } else { alert("Oh @#$% gremlins!"); }
      });
    } else {
      $.post('/remove_vote/', {id: id, type: vote_type}, function(json) {
        if(json.success == 'success') {
          self.src = 'vote_' + vote_type + '.png';
          $(self).removeClass('selected').siblings('div.score').html(json.score);
        } else { alert("Oh @#$% gremlins!"); }
      });                
    }
  });
});
为此:

$('div.answer img.vote').click(function() {

你是什么意思,图像是“不可点击的”?当然你可以点击它们。当你这样做时会发生什么?您是否使用过任何类型的调试器来检查您的处理程序是否被调用?例如,当您悬停它们时,没有指针显示…就像悬停超链接一样,但更重要的是,当我单击图像时,似乎没有调用jquery代码。对于指针,您只需要
img.vote{cursor:pointer;}
在您的CSS中。我已经更新了,但是当我单击图像时,jquery代码似乎仍然没有被调用。@raklos-页面加载后,元素是动态创建的吗?另外,试着在那里粘贴一个简单的
alert()
,看看它是否被调用。谢谢,answercontainer会是一个div,每个答案周围都有id=answercontainer吗?@raklos-几乎,所有答案周围都会有一个
:)嘿,我已经有了这个功能,但没有使用你建议的“self”变量来改进。上面有什么问题吗?谢谢
$(function() {
  $('div.answer img.vote').click(function() {
    var id = $(this).closest('div.answer').attr('id').split('_').pop(),
      vote_type = $(this).hasClass('up') ? 'up' : 'down',
      self = this;
    if(!$(this).hasClass('selected')) {
      $.post('/vote/', {id: id, type: vote_type}, function(json) {
        if(json.success == 'success') {
          self.src = 'vote_' + vote_type + '_selected.png';
          $(self).addClass('selected').siblings('div.score').html(json.score);
        } else { alert("Oh @#$% gremlins!"); }
      });
    } else {
      $.post('/remove_vote/', {id: id, type: vote_type}, function(json) {
        if(json.success == 'success') {
          self.src = 'vote_' + vote_type + '.png';
          $(self).removeClass('selected').siblings('div.score').html(json.score);
        } else { alert("Oh @#$% gremlins!"); }
      });                
    }
  });
});
$('div.answer img.vote').click(function() {
$('#answerContainer').delegate('div.answer img.vote', 'click', function() {