EDIT : 문제는 Boxy와 관련이 없으므로 JQuery의 load 메소드를 사용했을 때 같은 문제가 발생했습니다.jquery ajax post 콜백 - "세 번째"호출 후에 조작이 중지됩니다.
EDIT 2 : Ajax 콜백 내부에서 link.remove()
을 꺼내어 아약스로드 전에 배치하면 더 이상 문제가되지 않습니다. ajax 콜백 함수 내에서 요소를 조작하기위한 제한이 있습니까?
Boxy 플러그인과 함께 JQuery를 사용하고 있습니다.
페이지의 '플래그'링크를 클릭하면 Boxy 모달이 팝업되고 ajax를 통해 양식이로드됩니다. 사용자가 양식을 제출하면 링크 (<a>
태그)가 제거되고 새 응답이 ajax 응답에서 만들어집니다. 이 메커니즘은 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