2010-12-16 19 views
0

動的に追加された要素(JSON関数内)にコントロールを割り当てるときに問題が発生します。Jquery - getJSONから動的に追加されたコントロールを追加する

コードは正常に動作していますが、$( 'div.prnt')を追加するとappend( "hello"); JSONの内部で$( "div.text")を割り当てません。draggable();それに。私は離れてJSON関数を取ると私はちょうど$( 'div.prnt')を使用しています。append( "hello");それはすぐに動作します。

ドラッグ可能なコントロールが呼び出される前に、JSON関数が要素の追加を停止していると思います。

<style> 
    div.prnt div.test 
    { 
     border: 1px solid #000; 
     width: 200px; 
     height: 200px; 
    } 
</style> 
<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     var serviceurl = "WebServices/BusinessCardStudio.svc/gettextobjects/3457/17/17/1064/709/600/399"; 

     $.getJSON 
     (
      serviceurl, 
      function (data) 
      { 
       $.each(data, function (i, item) 
       { 
        $('div.prnt').append("<div class='object text'>hello</div>"); 
       }); 
      } 
     ); 

     $("div.text").draggable(); 
    }); 
</script> 
<div class="prnt"> 
</div> 

誰もがこの問題を回避する方法を知っていますか?事前に

おかげ

答えて

1

アヤックスが

$.getJSON 
      (
       serviceurl, 
       function (data) 
       { 
        $.each(data, function (i, item) 
        { 
         $('div.prnt').append("<div class='object text'>hello</div>"); 
        }); 
       $("div.text").draggable(); 
       } 
      ); 


     }); 
を完了した後に、その行わ性を確保するように、AJAXの成功でそれを行います
3

AJAXは非同期です。

getJSON()コールはすぐに戻り、サーバが応答する前にdraggable()コールが実行されます。

draggable()コールをコールバックに移動する必要があります。
これは、コールバックが最初に存在する理由です。

1

$("div.text").draggable();は、JSONリクエストの開始後すぐに呼び出されます。その後、サーバーはJSONで応答し、渡した関数を実行します。だからあなたはまだ存在しない何かをドラッグ可能にしています。

コールバック関数にドラッグ可能なコールを入れてください。

関連する問題