重複の可能性:
jQuery .data() が DOM を更新しない
on 属性の使用に問題があります。API呼び出しを送信するための小さなメソッドセットを作成しました。
マークアップは次のようになります。
<div data-global-id="1318" data-action="unfollow" class="action text-as-link follow-btn btn" style="text-decoration: none;">unfollow</div>
そして、次のようなイベント キャプチャがあります。
$(document).on('click','.action', function(){
var t={};
t.args={};
t.args.global_id=$(this).data('global-id');
t.global_id=t.args.global_id;
t.action=$(this).data('action');
t.identifier=t.action + '_v2';
alert('here is action: ' + t.action);
api_post_v1(t);
});
api_post_v1 は呼び出しを正しく送信します。
コールバックを処理するコードがいくつかあり、マークアップを次のように設定します。
<div data-global-id="1318" data-action="follow" class="action text-as-link follow-btn btn" style="text-decoration: none;">follow</div>
このコードは次のようになります。
$foo=$('.action[data-action=unfollow][data-global-id='+global_id+']');
$foo.attr('data-action','follow');
重要な部分はデータアクションです。上記のイベント ハンドラーの呼び出しで「フォロー」していることを伝えたいのですが、まだ「フォロー解除」していると表示されます。
シーケンスは次のとおりです。
- ページの読み込み、 data-action='unfollow'
- これをクリックすると、API 呼び出しが行われ、このユーザーをフォローしていません。コールバックは data-action='follow' を設定します
- この値をもう一度クリックすると、データアクションは「フォロー」ではなく「フォロー解除」としてエコーされます
このイベントのバインディングを更新するよう jQuery に指示するにはどうすればよいですか? これが $(document).on の機能だと思いました。
どうも