0

ボタンが押されたときに基本的に投票数を増減させようとしています(エラーを悪用するために状況を弱めました)。2 つの異なるボタンをクリック イベントにバインドしますが、それらから応答を取得できません (Firebug でテスト済み)。

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-Rails => 1.0.12
Jquery => 1.6.1
JqueryUI => 1.8.12
JqueryUJS => 上記の Jquery-Rails に付属するもの。

メソッドをボタンにバインドする前にドキュメントがロードされるのを待っているので、ライブも機能しません。

問題の 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>
4

1 に答える 1

2

正しい方向を示すには、このデモをご覧ください。

これが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);
    });

});​
于 2012-08-09T21:15:48.733 に答える