ユーザーの作品一覧でブックマーク済みかどうかを表示するUser Script

完全に自己満足。
pixivはホント何をするにも無駄にページを遷移させるのでストレスがたまりますね。

全体像は
kk6's
gist: 1256405 — Gist
でたまに更新してます。

  $('.display_works a').each(function() {
    var li = $(this).closest('li');
    $.ajax({
      type: 'GET',
      url:  $(this).attr('href'),
      dataType: 'html',
      success: function(data) {
        var bm_flag = $(data).find('div.bookmark > a').text();
        if (bm_flag !== "ブックマークに追加") 
        li.append($('<span>B!</span>').css('color','blue'));
      },
      error: function() {
               alert('ERROR!');
             }
    });
  });

success: function(){}の中でthisを参照するとXMLHTTPRequestっぽい(調べてない)オブジェクトが格納されていることにしばらく気づかなくてちょっとハマった。javascriptの関数コンテキストは「どのように宣言されたか」ではなく「どう呼ばれたか」で決まるというのをついつい忘れがちなので気を付けなければいけない。

で、$.ajaxの外側のクロージャに$(this).closest('li')を保存しておくことで期待通りの動作になったのでした。