1

私はいくつかの画像を持っています

<img src="unstarred.png" class="unstarred-button" id="unstarred-1" />
<img src="unstarred.png" class="unstarred-button" id="unstarred-2" />
<img src="unstarred.png" class="unstarred-button" id="unstarred-3" />
<img src="unstarred.png" class="unstarred-button" id="unstarred-4" />

次に、この関数をバインドします。

$('.unstarred-button').click(function() {
    id = $(this).attr('id').replace(/^unstarred-/, '');
    url = '/star.php?id=' + id;

    $.ajax({
        type: 'GET',
        url:  url
    }).done(function() {
        // What should be put here?
    });
});

今、私は先に進む方法がわかりません。src呼び出しでクリックされた画像の属性を変更したいのですが、 $(this)はクリックさdone()れた画像を確実に返しません。$(this).attr('id')undefinedalert()

誰か助けてくれませんか?

4

2 に答える 2

1
$('.unstarred-button').click(function() {
    var that = this;
    var id = this.id.replace(/^unstarred-/, '');
    var url = '/star.php?id=' + id;

    $.ajax({
        type: 'GET',
        url:  url
    }).done(function() {
        that.src = 'some/new/src.jpg';
    });
});
于 2012-08-23T16:07:57.220 に答える
1

これthisは、 のコンテキスト内でdoneは を参照しないためimgです。clickイベント ハンドラーにコンテキストを保存する必要があります。

$('.unstarred-button').click(function() {
    var self = $(this);
    id = self.attr('id').replace(/^unstarred-/, '');
    url = '/star.php?id=' + id;

    $.ajax({
        type: 'GET',
        url:  url
    }).done(function() {
        self.attr('src', 'something.jpg');
    });
});

また、 DOM 要素のsrcまたはを変更するのに jQuery は必要ありません。属性を直接変更できます。idthis.src = 'something.jpgthis.id = 'new_id'

于 2012-08-23T16:08:06.690 に答える