0

同じクラスと動的 ID を持つボタンのリストがあります。ユーザーがボタンをクリックすると、そのボタンのテキストが「追加済み」に変わります。関数の残りの部分は正常に動作しますが、成功の結果はまったく変化していません。成功する前に、次の結果が得られました。

$('.addalbum').text('Added'); 

しかし、リストのすべてのボタンが追加されました。選択したアイテムの横にあるボタンのみを変更したい。セレクターでボタンのIDにアクセスしようとしていますが、これまでのところサイコロはありません。

jQuery

$('.addalbum').click(function() {

        var album_id = $('.addalbum').attr('id');

        $.ajax({
                    url: '/album/addAlbumToList',
                    type: 'POST',
                    data: data-is-here,
                    success: function (result) {
                        $('.addalbum' + album_id).text('Added');                    
                    }
                });
        e.preventDefault();
});

HTML/PHP

<button class="addalbum" id="add<?php echo $a->album_id; ?>">Add album</button>
so the IDs are #add123, #add124, etc.
4

5 に答える 5

3

クリック ハンドラー内では、 を使用してアイテム自体を参照できます$(this)。そのため、これの代わりに:

var album_id = $('.addalbum').attr('id');

あなたはこれを書くでしょう:

var album_id = $(this).attr('id');

いくつかの場所で使用しているため、変数を作成することもできます。

var $album = $(this),
album_id = $album.attr('id');

// success handler
$album.text('Added');

ここでは $album を使用して、jQuery コレクションであることを示しています

于 2012-11-23T14:58:24.090 に答える
1

ajax呼び出しの前に保存するとき$(this).attr('id')の代わりに必要です。$('.addalbum')

$('.addalbum').click(function() {

        var album = $(this);

        $.ajax({
                    url: '/album/addAlbumToList',
                    type: 'POST',
                    data: data-is-here,
                    success: function (result) {
                        album.text('Added');                    
                    }
                });
        e.preventDefault();
});
于 2012-11-23T14:58:59.303 に答える
0

thisクリックしたボタンを参照するために 使用できます。

$('.addalbum').click(function() {
    var button = $(this);
    $.ajax({
        url: '/album/addAlbumToList',
        type: 'POST',
        data: data-is-here,
        success: function (result) {
            button.text('Added');                    
        }
    });
    e.preventDefault();
});
于 2012-11-23T14:59:14.170 に答える
0

IDが一意である場合、なぜそうではないのか

$('#' + album_id).text('Added'); 

またはそれ以上

$('.addalbum').click(function() {

        var thisbutton = $(this);

        $.ajax({
                    url: '/album/addAlbumToList',
                    type: 'POST',
                    data: data-is-here,
                    success: function (result) {
                        thisbutton.text('Added');                    
                    }
                });
        e.preventDefault();
});
于 2012-11-23T14:59:40.893 に答える
0

混乱したと思います。.addalbum に album_id を追加していますが、クラス addalbum には、フィールドにあるような動的 ID がありid="add<?php echo $a->album_id; ?>" ません。おそらくこれが、取得できない理由です。

于 2012-11-23T15:01:18.320 に答える