※ ChatGPTを利用し、要約された質問です(原文:jQuery.msgBoxでのthisの使用につい)
jQuery.msgBoxでのthisの使用について
このQ&Aのポイント
質問者はjQuery(v1.3.2)とjQuery.msgBox v0.9を使用してスクリプトを書いています。質問者のコードでは、クリックした要素にクラスを追加してスタイルを変更するが、最後の部分がうまく動作していないとのことです。
現在の動作確認は問題なく、phpの処理と判定も成功していることが確認されていますが、最後の部分でのthisの使用が問題として考えられます。
jQueryの経験が少ないため、具体的な原因を特定することができません。どなたかがこの問題について助言をいただけることを希望しています。
jQuery.msgBoxでのthisの使用につい
jQuery(v1.3.2), jQuery.msgBox( http://jquerymsgbox.ibrahimkalyoncu.com/ ) v0.9を使用して、スクリプトを書いています。以下の様なコードなのですが、期待した動作にならないため、誤りなど指摘していただければ幸いです。
-----------------
$('.target').click(function(){
$.msgBox({
title: 'title',
content: 'content',
type: 'confirm',
buttons: [{ value: 'yes' }, { value: 'no' }, { value: 'cancel' }],
success: function (result) {
if (result == 'yes') {
$.post(
'//***.php',
{ key: 'val' },
function(data){
if ( data.indexOf('success') !== -1 ) {
$(this).addClass('success').css({'background-color':'#FF6600'});
}
}
);
}
}
});
});
------------------
流れとしては、
1.class="target"であるいくつかの要素のうち、いずれかをクリック
2.msgBoxでダイアログボックスを表示し、動作を継続するか確認
3.$.postを用いて、クリックした要素に含まれる情報を処理用phpに投げる
4.処理用のphpは動作が正常に終了すると"success"を出力、これをjsで取得して判定
5.phpが動作を正常に終了したら、クリックした要素だけにclassを追加、スタイル変更
としたいです。
現在4番までは動作確認が取れ、phpの処理および判定(alertで確認)は成功しているのですが、最後の5番のみがうまくいきません。恐らくthisがうまく動作していないものと考えられますが、jQueryはあまり経験がないので原因が特定出来ません。
どうかよろしくお願い致します。
お礼
回答有り難うございます。グローバル変数に格納しておけばよかったのですね、とても勉強になりました。