<div id="msg_container">
<span> Is this helpful ? </span>
<span class="feedback">
<a title="like"> Yes </a>
<a title="dislike"> No </a>
</span>
</div>
// jQuery Script
$('.feedback a').live('click', function() {
var reference = $(this).parent().parent();
$.post("URL", $("FORM").serialize(),
function(data){
// posted successfully and following will be executed
reference.empty();
reference.add('<span> You have given feedback </span>');
}, "json");
});
プロセスは次のようになります。
- ユーザーに尋ねられます'これは役に立ちましたか?はい・いいえ'
- 「はい」または「いいえ」のいずれかをクリックすると、.postメソッドが実行されます
- サーバーに正常に投稿した後、
- DOM要素id="msg_container"で、コンテンツ全体を「フィードバックを送信しました」という文を含む通常のスパンまたは段落に変更して、各ユーザーが1つのフィードバックのみを送信できるようにします。
問題:
- div "msg_container"が空になると、.add()は機能しませんでした。
- 「msg_container」を空にしなくても、.add()は機能しませんでした。
- ドキュメントを読みましたが、.add()は、上記のように参照オブジェクトで機能しないようです。
- var reference = $(this).parent();のように変数への参照を割り当てる必要があります。そうしないと、$。postを実行した後、$(this)は元の'this'参照を失います。
これを解決する方法はありますか?要件が満たされている限り、代替ソリューションを受け入れることができます。