Php 《圣经》”;可排序的。创建();方法在进行AJAX调用以更新无序列表后不起作用
这是我使用该网站两年后的第一篇stackoverflow帖子,所以请不要释放猎犬 我试图创建一个网站的“编辑我的个人资料照片”部分,用户可以(1)添加个人资料照片;(2) 删除个人资料照片;(3)重新排列她的个人资料照片 从数据库的角度来看,每个用户仅限于五张个人资料图片。因此,my users表中有image0、image1、image2、image3和image4的字段 添加照片很简单,但我在删除和重新排序照片时遇到了一个奇怪的问题 为了对照片重新排序,我使用了prototype/scriptaculous“sortable.create()”方法。具体地说,我在一个 无序列表 对任何列表元素重新排序都会进行ajax调用,在相应的php脚本中,我会对图像进行适当的重新排序(例如,以前的image0将被重新排序) 现在在数据库中写入image2等) 然后,我将更新后的无序图像列表重新创建为HTML 最后,在处理ajax javascript函数中(即,如果ajax.status==200和ajax.readyState==4), 我调用sortable.create方法再次对新的无序图像列表进行排序 上面提到的方法绝对有效。现在是脑筋急转弯: 无序列表中的每个列表元素还包含一个用于删除特定图像的链接。Php 《圣经》”;可排序的。创建();方法在进行AJAX调用以更新无序列表后不起作用,php,javascript,ajax,prototypejs,scriptaculous,Php,Javascript,Ajax,Prototypejs,Scriptaculous,这是我使用该网站两年后的第一篇stackoverflow帖子,所以请不要释放猎犬 我试图创建一个网站的“编辑我的个人资料照片”部分,用户可以(1)添加个人资料照片;(2) 删除个人资料照片;(3)重新排列她的个人资料照片 从数据库的角度来看,每个用户仅限于五张个人资料图片。因此,my users表中有image0、image1、image2、image3和image4的字段 添加照片很简单,但我在删除和重新排序照片时遇到了一个奇怪的问题 为了对照片重新排序,我使用了prototype/scrip
想象一下一张照片列表,在无序列表中的每张照片下都有一个“删除这张照片”链接 下面是HTML的大致外观:
<ul id="profile_pics" onmouseup="reorder_photos();">
<li id="0"><img src="images/image0.jpg"><a href="?delete_id=0" onclick="return false;" onmouseup="stopPropagation(event); delete_photo('image0');">delete this photo</a></li>
<li id="1"><img src="images/image1.jpg"><a href="?delete_id=1" onclick="return false;" onmouseup="stopPropagation(event); delete_photo('image1');">delete this photo</a></li>
<li id="2"><img src="images/image2.jpg"><a href="?delete_id=2" onclick="return false;" onmouseup="stopPropagation(event); delete_photo('image2');">delete this photo</a></li>
</ul>
请注意,单击“删除此照片”链接将调用delete_photo函数,但由于调用了stopPropagation()函数,因此不会涉及reorder_photos函数
delete_photo函数对PHP脚本进行AJAX调用,该脚本(1)删除有问题的照片,(2)进行适当的数据库调整,(3)重新创建无序列表。ajax处理函数然后调用sortable.create()
使此新无序列表可排序
问题是新的无序列表不可排序
使这个问题更加奇怪和混乱的是,当我在ajax处理函数中调用另一个scriptaculous方法,如“$('profile_pics').fade({duration:2.5}”);”时,它确实起作用
为什么??为什么?为什么?
任何帮助都将不胜感激。如果示例代码有帮助的话,我可以发布这篇文章——我只是不想让这篇文章比现在更加百科全书化。当页面上的内容被替换时,事件处理程序也会随之更新。在AJAX调用之后,您需要重新初始化您的可排序表。当页面上的内容被替换时,事件处理程序将随之进行。您需要在AJAX调用后重新初始化您的排序表。您好,谢谢您的回复。我确实在新的HTML中添加了事件处理程序,然后在处理ajax函数中调用了sortable.create()。sortable.create()不起作用,但当我尝试其他方法(如使无序列表可褪色)时,确实起了作用。这有用吗?我可以张贴代码,如果这将有帮助。再次感谢您的回复,这在过去的一周里让我抓狂。您可能必须先销毁原始的可排序表。是的,我尝试过--调用sortable.destroy(),然后尝试sortable.create()。不过再次感谢。另外,我不知道这是否会引起社区的愤怒,但有没有办法在这个网站上“雇佣”一个人来查看这些东西?我真的需要处理好这件事,而且我不介意把钱花出去。基本问题可以减少到200行代码,max.希望闪电不会击中我意识到这已经超过一年了,而且。。。现在有一个赏金系统来处理你问的第二个问题。嗨,迪奥多斯,谢谢你的回复。我确实在新的HTML中添加了事件处理程序,然后在处理ajax函数中调用了sortable.create()。sortable.create()不起作用,但当我尝试其他方法(如使无序列表可褪色)时,确实起了作用。这有用吗?我可以张贴代码,如果这将有帮助。再次感谢您的回复,这在过去的一周里让我抓狂。您可能必须先销毁原始的可排序表。是的,我尝试过--调用sortable.destroy(),然后尝试sortable.create()。不过再次感谢。另外,我不知道这是否会引起社区的愤怒,但有没有办法在这个网站上“雇佣”一个人来查看这些东西?我真的需要处理好这件事,而且我不介意把钱花出去。基本问题可以减少到200行代码,max.希望闪电不会击中我意识到这已经超过一年了,而且。。。现在有一个赏金系统来处理你问的第二个问题。