2012-03-02 9 views
4

私はここにそう$ (this).data("id")を返しダイアログ渡すパラメータ

$("#<%=dialog.ClientID%>").dialog({ 
       autoOpen: false, 
       show: "blind", 
       hide: "explode", 
       width: 800, 
       height:200, 
       modal: true, 
       buttons: 
       { 
        "Ajouter": function() { 
         $(this).dialog("close"); 
         StringBuilderDir($(this).data("id")); 
        }, 
        "Vider": function() { 
         $(this).dialog("close"); 
         $($(this).data("id")).val("") 
        }, 
        "Canceler": function() { 
         $(this).dialog("close"); 
        } 
       }, 
       open: function() 
       { 
        var dir = $($(this).data("id")).val().split("-"); 
        if(dir[0] != "") 
        { 
         $("#<%=dd_dialog_directionvp.ClientID%> option").each(function(index) 
         { 
          if ($("#<%=dd_dialog_directionvp.ClientID()%> option")[index].text == dir[0]) 
          { 
           $("#<%=dd_dialog_directionvp.ClientID()%> option")[index].selected = true; 
          } 
         }) 
        } 
       } 
       }); 

ためのコードは、ダイアログ

$("#<%=txtDirProprio.ClientID%>").focus(function() 
{ 
     $("#<%=dialog.ClientID%>").dialog("open").data("id","#<%=txtDirProprio.ClientID%>"); 
     return false; 
}); 

を呼び出し、テキストボックスのIDを渡すために、このよう.dataを使用テキストボックスのID。オープン関数以外は正常に動作します。 idは定義されていません

ボタンの機能では機能しますが、開いている機能では機能しないのはなぜですか。そうでないように見える「この」

答えて

8
$("#<%=txtDirProprio.ClientID%>").focus(function() 
{ 
     $("#<%=dialog.ClientID%>").data("id","#<%=txtDirProprio.ClientID%>").dialog("open"); 
     return false; 
}); 

ありがとうござい同じことが.dialog('open');

+0

ありがとうを呼び出す前に、最初にデータを設定する必要があります!できます。私はこれに1時間かかっていた、あなたは30秒笑った。しかし、私は理解していません。なぜオープン機能で動作していなかったのですか? – Marc

+2

.dialog( 'open')を呼び出すと、ダイアログボックスが開き、open関数が実行され、jQueryが返され、次のメソッド.data()が呼び出され、データが設定されるため、機能していませんでした。したがって、データが設定される前にオープン関数が実行されるため、オープン時には利用できません) – Brian

+0

あなたの時間をありがとうございます – Marc