0

私は次のようにbtn-groupに接続されたjquery関数を持っています:

<div class="row">
    <!-- Vote button row -->
    <div class="span8" id="votenumbers">
        <div class="btn-group">
            <button class="btn" id="votebutton" data-votevalue="1">1</button>
            <button class="btn" id="votebutton" data-votevalue="2">2</button>
            <button class="btn" id="votebutton" data-votevalue="3">3</button>
            <button class="btn" id="votebutton" data-votevalue="4">4</button>
            <button class="btn" id="votebutton" data-votevalue="5">5</button>
            <button class="btn" id="votebutton" data-votevalue="6">6</button>
            <button class="btn" id="votebutton" data-votevalue="7">7</button>
            <button class="btn" id="votebutton" data-votevalue="8">8</button>
            <button class="btn" id="votebutton" data-votevalue="9">9</button>
            <button class="btn" id="votebutton" data-votevalue="10">10</button>
        </div>
    </div>
</div>

<!-- Vote button row ends -->

これは、各ボタンに機能を割り当てるために使用するjavascriptimです。

$('#votebutton').each(function(){
    $(this).click(function(){
        var votevalue = $(this).data('votevalue');
        var filename = $('.mainimage').data('filename');
        var category = $('.mainimage').data('category');
            $.ajax({
                type: 'POST',
                url: '?category=' + category,
                data: {
                    "votevalue" : votevalue,
                    "filename" : filename
                },
                success: function(data){
                    $('body').html(data);
                }
        }); // end ajax
    }); // end click
}); // end each

今私の問題は、最初のボタンだけがクリックイベントに反応しているということです。他はしません。理由はわかりません。

4

1 に答える 1

2

'id'属性に同じ値をすべてのボタンに割り当てました。Id属性は、HTMLページ全体で一意であると想定されています。使用し$('#votebutton')たセレクター、idセレクターは、単一の要素を返します。これが、クリックハンドラーがボタンの1つに対してのみ実行されている理由です。ボタンごとに異なるID値を割り当てるか、IDをまったく割り当てないでください。

ボタンのid属性を完全に削除し、代わりにクラスセレクターを使用して、ボタンを見つけることができます。

$('#votenumbers .btn').each(function() { $(this).click(...) ... });
于 2012-09-29T21:14:02.153 に答える