无法拖动动态添加DIV

Can't drag dynamically added DIV

我有一个 DIV,id: TEST,我可以使用 jQuery UI 拖动它。一切正常,但是一旦我删除它并动态地将 DIV 加载到 HTML 中(以及指定更多:使用 SSE 将 DIV 加载到 HTML 中) , DIV 无法拖动。这是因为 jQuery 在 DIV 之前加载。如何解决这个问题?由于我使用 SSE,DIV 在一段时间内被加载了几次。

jquery代码:

 $(function() {
      $( "#TEST" ).draggable({ 
         containment: "parent"             
      }).css({'cursor': 'all-scroll', 'z-index': '5'});
 });

DIV TEST 被加载到另一个名为 dragZone

的 DIV
<div id="dragZone" name="dragZone"> [div TEST is loaded here] </div>

加载SSE的JS:

 //HTML5 SSE(Server Sent Event) initilization
     this.initSevr=function(){
          sevr = new EventSource('test.php');
          sevr.onmessage = function(e){ 
              if(oldata!=e.data){
                  dragZone.innerHTML+=e.data;
                  oldata = e.data;
              }
          };     
     };

那么如何再次拖动 DIV?使用 SSE 将 Div 放入 HTML,这一切都有效。

您可能需要将可拖动代码移动到加载事件中,如下所示:

 //HTML5 SSE(Server Sent Event) initilization
     this.initSevr=function(){
          sevr = new EventSource('test.php');
          sevr.onmessage = function(e){ 
              if(oldata!=e.data){
                  dragZone.innerHTML+=e.data;
                  oldata = e.data;

                  $( "#TEST" ).draggable({ 
                     containment: "parent"             
                  }).css({'cursor': 'all-scroll', 'z-index': '5'});
              }
          };     
     };

这是假设 DOM 在使用 innerHTML 后立即更新;如果不是,则可能需要使用较短的 setTimeout 使其可拖动。

我想你忘了引述,试着从

sevr = new EventSource('test.php);

sevr = new EventSource('test.php');