html
1<span class="follow-cancel" value="32">フォロー中</span> 2<!-- いずれかがデフォルトで表示 --> 3<span class="follow" value="32">フォロー</span>
このようなHTMLに対して
javascript
1//フォロー登録 2$('.follow').on('click', function() { 3 var params = { 4 param1 : $(this).attr('value'), 5 }; 6 $.ajax({ 7 type : 'POST', 8 url : 'Follow', 9 data : params, 10 datatype : 'json', 11 }).done(function (result) { 12 if(result.result == '登録成功'){ 13 $('.follow').each(function(i, elem) { 14 if(parseInt(result.follow_id) == $(elem).attr('value')){ 15 $(elem).text('フォロー中'); 16 $(elem).attr('class', 'follow-cancel'); 17 } 18 }); 19 } 20 }).fail(function (jqHR, textStatus, errorThrown) { 21 console.log(XMLHttpRequest.status); 22 console.log(textStatus); 23 console.log(errorThrown); 24 }); 25 }); 26 27//フォロー解除 28 $('.follow-cancel').on('click', function() { 29 var params = { 30 param1 : $(this).attr('value'), 31 }; 32 $.ajax({ 33 type : 'POST', 34 url : 'FollowCancel', 35 data : params, 36 datatype : 'json', 37 }).done(function (result) { 38 if(result.result == '解除成功') { 39 $('.follow-cancel').each(function(i, elem) { 40 if(parseInt(result.follow_id) == $(elem).attr('value')){ 41 $(elem).text('フォロー'); 42 $(elem).attr('class', 'follow'); 43 } 44 }); 45 } 46 }).fail(function (jqHR, textStatus, errorThrown) { 47 console.log(XMLHttpRequest.status); 48 console.log(textStatus); 49 console.log(errorThrown); 50 }); 51 });
というJSでクリックする度にテキストとクラスを切り替えたいのですが上手くいきません
理由として新しく追加した要素はイベントハンドラに設定しなければならないというのは分かるのですが
下記のようにするとそもそも発火しません
正しい方法をご存じであれば教えてください
javascript
1//フォロー登録 2 $('.follow').on('click', '.follow-cancel', function() { 3 var params = { 4 param1 : $(this).attr('value'), 5 }; 6 $.ajax({ 7 type : 'POST', 8 url : 'Follow', 9 data : params, 10 datatype : 'json', 11 }).done(function (result) { 12 if(result.result == '登録成功'){ 13 $('.follow').each(function(i, elem) { 14 if(parseInt(result.follow_id) == $(elem).attr('value')){ 15 $(elem).text('フォロー中'); 16 $(elem).attr('class', 'follow-cancel'); 17 } 18 }); 19 } 20 }).fail(function (jqHR, textStatus, errorThrown) { 21 console.log(XMLHttpRequest.status); 22 console.log(textStatus); 23 console.log(errorThrown); 24 }); 25 }); 26 27 //フォロー解除 28 $('.follow-cancel').on('click', '.follow', function() { 29 var params = { 30 param1 : $(this).attr('value'), 31 }; 32 $.ajax({ 33 type : 'POST', 34 url : 'FollowCancel', 35 data : params, 36 datatype : 'json', 37 }).done(function (result) { 38 if(result.result == '解除成功') { 39 $('.follow-cancel').each(function(i, elem) { 40 if(parseInt(result.follow_id) == $(elem).attr('value')){ 41 $(elem).text('フォロー'); 42 $(elem).attr('class', 'follow'); 43 } 44 }); 45 } 46 }).fail(function (jqHR, textStatus, errorThrown) { 47 console.log(XMLHttpRequest.status); 48 console.log(textStatus); 49 console.log(errorThrown); 50 }); 51 });
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/03 02:22