+ -
当前位置:首页 → 问答吧 → Jquery 中 Drag & Drop事件再绑定~

Jquery 中 Drag & Drop事件再绑定~

时间:2009-05-05

来源:互联网

当通过AJAX返回的新DOM元素后,新的元素并不支持已设置Drag&Drop的功能,
而我再次调用Drag&Drop的方法重新注册也不行~

有什么好办法呢?

这是我的代码

复制代码
  1. $('div#adminPage').pagination(<?=$adminImagesCount?>,{
  2.                 perPage:24,
  3.                 callback:function(page){
  4.                 var start=(page-1)*24;
  5.                 var end=page*24;
  6.                 $.post("publish_images_query.php",
  7.                     { flag:0, rowStart:start, rowEnd:end },
  8.                     function(msg){
  9.                         $('ul#adminDrag li').remove();
  10.                         $('ul#adminDrag').append(msg);
  11.                    });
  12.                 $("div#adminPage span.pageNumber").html("检索到"+page+"记录");
  13.                 adminDragAndDrop();
  14.             }
  15.         });
  16. // 支持拖放
  17.             var $gallery=$('#customerDrag'), $trash = $('#customerGabage');
  18.             // 图片展示区拖动
  19.             $('li',$gallery).draggable({
  20.               helper: 'clone',
  21.               containment:'document',
  22.               cursor:'move',
  23.               cursorAt: { left: 20 , top:20 },
  24.               opacity: 0.5,
  25.               revert: 'invalid'
  26.             });
  27.             // 垃圾回收区
  28.             $trash.droppable({
  29.                 accept: '#customerDrag > li',
  30.                 drop: function(ev, ui) {
  31.                     deleteImage(ui.draggable);
  32.                 }
  33.             });
  34.             
  35.             //  允许撤销
  36.             $gallery.parent().droppable({
  37.                 accept: '#customerDrop > li',
  38.                 drop: function(ev, ui) {
  39.                     recycleImage(ui.draggable);
  40.                 }
  41.             });
  42.         
  43.             // 删除展示容器中的物件
  44.             function deleteImage($item){
  45.                 $item.fadeOut('slow',function(){
  46.                     // 检测gabage里是否有ul
  47.                     var $list = $('ul',$trash).length ? $('ul',$trash) :$('<ul id="customerDrop"/>').appendTo($trash);
  48.                     
  49.                     $item.appendTo($list)
  50.                         .fadeIn(function(){
  51.                             $item.find('img')
  52.                                 .animate({width: '40px' , height: '20px' ,opacity:'0.5'})
  53.                                 .animate({width: '50px' , height: '30px' ,opacity : '1.0'},'slow','easeOutBounce')
  54.                     });
  55.                 });
  56.                 $("ul#customerDrop>li").css({display : "inline"});
  57.             }// end of deleteImage
  58.             // 回收垃圾容器中的物件
  59.             function recycleImage($item) {
  60.                 $item.fadeOut('slow',function(){        
  61.                     $item.find('img')
  62.                         .animate({width : '80px', height : '60px',opacity : '1.0'},'easeOutBack')
  63.                         .end()
  64.                         .appendTo($gallery)
  65.                         .fadeIn();
  66.                 });
  67.             }// end of recycleImage

作者: chenyu220286   发布时间: 2009-05-05

要么把你的Drag & Drop事件放到ajax里面
要么用live绑定事件

作者: ggcall   发布时间: 2009-05-06

Live也可以绑定Drag Drop?
好像是mousemove、mousedown之类的吧!

我放到Ajax后重新绑定,但是也没效果

作者: chenyu220286   发布时间: 2009-05-06

你在ajax中的返回成功的回调函数中,重新把你的drag&drop事件,重新写一下,就OK 了

作者: seekarmor   发布时间: 2009-05-06

# $.post("publish_images_query.php",
#                     { flag:0, rowStart:start, rowEnd:end },
#                     function(msg){
#                         $('ul#adminDrag li').remove();
#                         $('ul#adminDrag').append(msg);

放到这里

#                    });

作者: ggcall   发布时间: 2009-05-06

相关阅读 更多