Javascript 从调用对话框的位置访问父项

Javascript 从调用对话框的位置访问父项,javascript,jquery,jquery-ui,jquery-selectors,jquery-ui-dialog,Javascript,Jquery,Jquery Ui,Jquery Selectors,Jquery Ui Dialog,我有一个表单元素的拖放功能。可拖动元件的结构如下所示 <div class="tools"> <ul> <li class="draggable" > <div class="control"> <label>&nbsp;</label> <input type="text" name="txt" value="" /> <span class="controlText

我有一个表单元素的拖放功能。可拖动元件的结构如下所示

<div class="tools">
 <ul>
<li class="draggable" >
  <div class="control">
    <label>&nbsp;</label>
    <input type="text" name="txt" value="" />
    <span class="controlText"> Text Box </span>
    <div class="delete" style="display:none"><sup>x</sup></div>
    <div class="properties txtbox" style="display:none">Properties</div>
  </div>
</li>
当对话框打开时

<div id="dialog-textbox" title="Text Box Properties" style="display:none">
 <p>This is the Text Box Properties Form.</p> 
 <form>
<fieldset>
  <label for="textbox_label">Enter Label </label>
  <input type="text" name="textbox_label" id="textbox_label" class="text ui-widget-content ui-corner-all" />
</fieldset>

我应该如何在此更新代码中添加一行,以便将标签更新为用户输入的值???

您可以在选择某个内容(在单击事件中)并设置selectedObject=Object后立即获取全局项,例如selectedObject=null。单击“取消”,使所选对象再次为空


仅当在任何时间点只有一个选定项时,此操作才有效。

您可以使用
.data()
存储单击的对象,如下所示:

   $('.txtbox').live('click', function() {
        ...
        $( "#dialog-textbox" ).data("elem_clicked", $(this)); //This stores
        $( "#dialog-textbox" ).dialog( "open" );
        return false;
    }); 
buttons: {
    "Apply": function(){
        ...
        var $elem_clicked = $("#dialog-textbox").data('elem_clicked'); //This retrieves
     },
  ...
 }
然后,您可以像这样检索它:

   $('.txtbox').live('click', function() {
        ...
        $( "#dialog-textbox" ).data("elem_clicked", $(this)); //This stores
        $( "#dialog-textbox" ).dialog( "open" );
        return false;
    }); 
buttons: {
    "Apply": function(){
        ...
        var $elem_clicked = $("#dialog-textbox").data('elem_clicked'); //This retrieves
     },
  ...
 }
如您所见,我们正在将对话框中单击的元素存储为
.data()

希望这有帮助。干杯

试试这个:

 $('.txtbox').live('click', function() {
     //get the label
        var label = $(this).parent().find('label').html();
        $("#textbox_label").val(label);
        $( "#dialog-textbox" ).data('clicked_div',$(this)).dialog( "open" );
        return false;
    }); 
这是:

var label = $("#textbox_label").val()
alert("New Label "+label);
// clicked element is $("#dialog-textbox").data('clicked_div')

呵呵,希望我们不是两个人crazy@Edgar当我从对话框中应用新标签,然后再次拖动该元素时,标签将到达默认应用的旧标签??你知道吗。我正在使用辅助克隆进行拖动。
var label = $("#textbox_label").val()
alert("New Label "+label);
// clicked element is $("#dialog-textbox").data('clicked_div')