0

在进行 AJAX 调用后,我遇到了 jQuery 无法正常工作的问题。这是一个可以正常工作的拖放脚本,但是当我想调用 AJAX 时它会停止。

var ary1=new Array(5);
ary1[0]="container1";
ary1[1]="container2";
ary1[2]="container3";
ary1[3]="container4";
ary1[4]="main_container";
var ary2=new Array(5)
ary2[0]=0;
ary2[1]=0;
ary2[2]=0;
ary2[3]=0;
ary2[4]=4;
var i;
var srouce,dest;
var old;

$(window).load(function(){

$(function() { 

  $( ".draggable" ).draggable();

    $( ".droppable, #droppable-inner" ).droppable({
        activeClass: "ui-state-hover",
        hoverClass: "ui-state-active",
        drop: function( event, ui ) {
               //if(ui.draggable.parent().attr('id')=="container1")alert("Yep");

          alert(ui.draggable.attr('id') + ' was dropped from ' +        ui.draggable.parent().attr('id')+' into '+$(this).attr('id'));
          $( this ).addClass( "ui-state-highlight" );

            // Move the dragged element into its new container

          srouce= ui.draggable.parent().attr('id');
          dest=$(this).attr('id');
          for(i=0;i<5;i++){
          if(srouce==ary1[i])break;} // to get src
          alert(ary1[i]);
          if((ary2[i]>0&&ary2[i]<=4&&ary1[i]=="main_container")||               (ary2[i]==1&&ary1[i]!="main_container"))
          {
          old=i;
          ary2[i]--;
          alert(ary2[i]); // decrement flag
          for(i=0;i<5;i++){
          if(ary1[i]==dest)break;}//to get dest
          alert(ary1[i]);
          if((ary2[i]==0&&ary1[i]!="main_container")|| (ary2[i]>=0&&ary2[i]<4&&ary1[i]=="main_container")) 
          {
            ary2[i]++;//increment flag
            alert(ary2[i]);
            ui.draggable.attr('style','position:relative ;cursor:hand');// move the image 
            $(this).append(ui.draggable);

          }

          else

          { 
            ary2[old]++;
            ui.draggable.attr('style','position:relative ;cursor:hand');
            ui.draggable.parent().append(ui.draggable);
            }

          }

            return false;
           }            
       });
  });

 });//]]>  
4

2 回答 2

1

您不需要 $(window).load(function() 如您的问题中所述,使用 jQuery DOM 就绪事件来连接事件。通常,当您收到 http 响应并再次加载页面时,您只会丢失这些 DOM 事件仅当您使用部分渲染时。

如果您将UPDATE PANEL 的使用称为 AJAX 调用,那么这是一个常见问题,您需要确保在 updatepanel 活动结束后立即重新连接您的 jQuery 事件。 看到这个链接

于 2013-02-23T12:43:52.267 回答
0

这个重复问题的解决方案可以在这里找到 ,这个解决方案对我有用。

作为结论,将您的代码从

$(function(){
   $(".cmdclose").click(function(){    
     // your code    
   });
});

$(function(){
    $(document).on("click",".cmdclose",function(){
       //your code
    });
});
于 2013-08-03T14:30:52.303 回答