编辑:问题与Boxy无关,我在使用JQuery的加载方法时遇到了同样的问题。
编辑2 :当我从ajax回调中取出link.remove()
并将其放在ajax加载之前时,问题就不复存在了。在ajax回调函数中操作元素是否存在限制。
我正在使用带有Boxy插件的JQuery。
单击页面上的“标记”链接时,弹出一个Boxy模式并通过ajax加载表单。当用户提交表单时,将删除链接(<a>
标记),并从ajax响应中创建一个新链接。这个机制可以工作3次!在第3次之后,回调函数不会删除/替换/追加(测试几种操作变量)元素。
我唯一的提示是在第3次调用之后,链接的父级变为不可选择。但是,我不能做任何事情。
很抱歉,如果这是一个非常微不足道的问题,我没有客户端编程经验。
相关的html如下:
<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代码:
$(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;
});
}});
}
答案 0 :(得分:0)
旧的和迟到的回复,但是..我在搜索我的答案时发现了这一点,所以......:)
我认为这是抛出“未修改”错误的问题,因为您返回相同的Ajax数据。
即使“ifModified”选项设置为false(这也是默认值),似乎也会发生这种情况。
三次返回相同的Ajax数据会给我带来问题(jQuery 1.4)。使数据唯一(只在响应中添加时间/随机数)可以解决问题。
我不知道这是浏览器(Firefox),jQuery还是服务器(Apache)问题。
答案 1 :(得分:0)
我遇到了同样的问题,我打电话给四四方后无法运行javascript。所以我将所有的javascript代码放在afterShow中:函数的一个boxy属性。除了提交我的表格,我几乎可以跑。我的方式可以给你一些东西。