基本的に趣味でコードを手書きしていますが、Stackoverflowに似た質問と回答のページを作成しています。
クリックすると発生する ajax 投稿を書いています。これにより、おそらくクリック可能な div が表示されます。AJAX の投稿は次のようになります。
function answerQuestion(){
$('.answerQuestion').click(function(){
var user_id = $('#user_id').val();
var q_id = $('.q_id').val();
var answer = CKEDITOR.instances.editor1.getData();
if(answer && q_id && user_id){
$.post("scripts/questions/answerQuestion.php", {user_id : user_id, q_id : q_id, answer : answer}, function(answerThisQuestion) {
$('.answerTotalCont').last().css('border-bottom', '1px dashed #444');
$(answerThisQuestion).hide().appendTo('.allAnswers').slideDown(1000, 'easeOutExpo');
});
}
});
}
投稿がデータを追加すると、「answerAskButton」というクリック可能な div が表示されます。この div は、読み込み時にすでにページに存在する可能性があり、AJAX 呼び出しの後に常に読み込まれます。
この「ボタン」をクリックすると、基本的にコメント用に別の AJAX 投稿が作成されます。そのコードは次のとおりです。
function submitComment(noType) {
//$('.answerAskButton').click(function(){
$('.answerAskButton').live("click", function(){
//GET ALL OF THE VARIABLES - THIS CODE IS FUNCTIONING PROPERLY - THIS IS JUST ABRIDGED TO SHOW SMALLER CODE
$.post("scripts/questions/postComment.php", {details : details, user_id : user_id, q_id : q_id, qora : qora, a_id : a_id}, function(postComment) {
noComment.slideUp(1000, 'easeOutExpo');
$(postComment).hide().appendTo(newComment).slideDown(1000, 'easeOutExpo');
$('.questComment').val(noType);
});
$('.questCommentsCont').slideUp(300, 'easeOutCirc');
$('.questComment').val(noType);
});
}
そして、これらは両方ともドキュメントの読み込み時に呼び出されます。
問題は: answerQuestion() ポストを作成すると、AJAX データが読み込まれ、新しいクリック可能なボタンが表示された後、そのボタン (answerAskButton) はクリックできなくなりますが、明らかにオンロードされていた他のボタンはまだ機能しています。
.live() がこれを修正する方法だと聞きましたが、ご覧のとおり、うまくいきません。
何かアドバイス?
更新:: .live() の代わりにコード .on() を更新しましたが、まだ機能していません。私のコードをご覧になりたい場合は、ログインはこちら(ユーザー名: public、パスワード: public) で、問題のページは Q&A ページで見つけることができるこれらの質問ページのいずれかです。
私たちが話しているスクリプトは question.js と呼ばれ、firebug または要素インスペクターで表示できます