0

我试图基本上增加和减少按钮按下时的投票计数(我已经愚弄了情况,以利用我的错误);我通过点击事件绑定了两个不同的按钮;但是,我无法获得任何响应(使用Firebug进行测试)。jquery绑定事件不回答

jQuery代码:

//This Code is located within Application.js (Rails) 
$(document).ready(function() { 
    $('.buttonUp').bind('click', function() { 
     var voting_element = $(this).closest('.current_vote'); 
     voting_element.text(Number(voting_element.text()) + 1); 
    }); 
    $('.buttonDown').bind('click', function() { 
     var voting_element = $(this).closest('.current_vote'); 
     voting_element.text(Number(voting_element.text()) - 1); 
    }); 
}); 

与类buttonUp或的buttonDown每个按钮位于含有单提交按钮的形式内。

我用Rails 3.1.3这样做的,使用jQuery库的以下版本:

jQuery的导轨=> 1.0.12
jQuery的=> 1.6.1
jQueryUI的=> 1.8。 12
JqueryUJS =>上面提供了Jquery-Rails。

Live也无法正常工作,因为在将方法绑定到按钮之前,我并没有料到它会等待文档加载。

以下是有关HTML的代码片段。

<tr> 
    <td>pop</td> 
    <td>pop</td> 
    <td><a href="/posts/12">Show</a></td> 
    <td><a href="/posts/12/edit">Edit</a></td> 
    <td><a href="/posts/12" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a></td> 
    <td><p> 
     <b>votes: </b> 
    </p> 
     <p class="current_vote"> 
     1 
     </p> 
     <form action="/posts/increaseVote?id=12" class="button_to" data-remote="true" data-type="json" method="post"><div><input class="buttonUp" type="submit" value="increaseVote" /><input name="authenticity_token" type="hidden" value="TxEGwONzSD+tnJ19iHMdGjuCBJMFoNJdECEspDtZxxY=" /></div></form> 
     <form action="/posts/decreaseVote?id=12" class="button_to" data-remote="true" data-type="json" method="post"><div><input class="buttonDown" type="submit" value="decreaseVote" /><input name="authenticity_token" type="hidden" value="TxEGwONzSD+tnJ19iHMdGjuCBJMFoNJdECEspDtZxxY=" /></div></form> 
    </tr> 
+0

能否请您也发布HTML? – PhD 2012-08-09 20:59:27

+0

为什么在同一个js文件中有两个'ready'事件? – Gabe 2012-08-09 21:00:51

+0

我不知道,我原来有一个,但我一直在切换很多东西,试图从中获得任何功能。随意将其切换为更清晰的格式。 – jab 2012-08-09 21:05:07

回答

2

为了指出正确的方向,看看这个DEMO

这里的JS:

$(document).ready(function() { 

    function vote(el, amt) { 
     var $counter = $(el).siblings('.counter'); 
     $counter.text(parseInt($counter.text(), 10) + amt); 
    } 

    $('.voteUp').bind('click', function() { 
     vote(this, 1); 
    }); 

    $('.voteDown').bind('click', function() { 
     vote(this, -1); 
    }); 

});​ 
+0

所以实际上有一个原因,为什么我使用绑定方法,我最终将'click'事件更改为成功的ajax调用(因为该按钮通过Ajax将JSON发送到服务器以更新新投票的数据库)。 – jab 2012-08-09 21:29:31

+0

Gotcha,更新了帖子和演示。 – 2012-08-09 21:39:42