EDIT:この問題はBoxyに関連していないため、JQueryのloadメソッドを使用したときに同じ問題が発生しました。jquery ajaxポストコールバック - 「第3回」コール後に操作が停止する
EDIT 2:Ajaxコールバック内からlink.remove()
を取り出して、それをajaxロードの前に配置すると、もう問題になりません。 ajaxコールバック関数内の要素を操作するための制限がありますか?
私はBoxyプラグインでJQueryを使用しています。
ページの「フラグ」リンクをクリックすると、Boxyモーダルがポップアップし、ajax経由でフォームが読み込まれます。ユーザーがフォームを送信すると、リンク(<a>
タグ)が削除され、新しいものがajaxレスポンスから作成されます。このメカニズムは、よく3回働きます! 3番目の後、コールバック関数は、要素を削除/置換/追加(テストされたいくつかのバリエーションの変形)しません。
私が持っている唯一のヒントは、3番目の呼び出しの後、リンクの親が選択できなくなることです。しかし、私はこれの何かをすることはできません。
申し訳ありませんが、これは非常に些細な問題ですが、私はクライアント側のプログラミングに経験はありません。ここで
<div class="flag-link">
<img class="flag-img" style="width: 16px; visibility: hidden;" src="/static/images/flag.png" alt=""/>
<a class="unflagged" href="/i/flag/showform/9/1/?next=/users/1/ozgurisil">Flag</a>
</div>
がjsの関連するコードです:
関連するHTML
は以下の通りです$(document).ready(function() {
$('div.flag-link a.unflagged').live('click', function(e){
doFlag(e);
return false;
});
...
});
function doFlag(e) {
var link = $(e.target);
var url = link.attr('href');
Boxy.load(url, {title:'Inappropriate Content', unloadOnHide:true, cache:false, behaviours: function(r) {
$("#flag-form").live("submit", function(){
var post_url = $("#flag-form").attr('action');
boxy = Boxy.get(this);
boxy.hideAndUnload();
$.post(post_url, $("#flag-form").serialize(), function(data){
par = link.parent();
par.append(data);
alert (par.attr('class')); //BECOMES UNDEFINED AT THE 3RD CALL!!
par.children('img.flag-img').css('visibility', 'visible');
link.remove();
});
return false;
});
}});
}
デモはありますか? – montrealist
リンクを削除/置換するのはなぜですか?あなたはちょうどリンクのhrefとクラスの属性を更新できませんか?それはもっと安全なことです。 – montrealist
私はデモを提供しようとします。私がこれに遭遇する前に、リンクを交換するのは手間がかかりませんでした。私がajaxコールバック関数内の要素を置き換えることを試みたのはこれが初めてです。私は最近編集を行った。 – shanyu