可以在运行时将唯一ID添加到对话框中吗?

时间:2015-05-19 19:05:59

标签: jquery ajax jquery-ui dialog jquery-ui-dialog

有没有办法在运行时为jQuery dialog box分配唯一值,以便我可以使用分配的ID分别跟踪每个对话框?

我正在尝试与电话系统进行交互,在有电话呼入时我会显示一个对话框。该对话框将有3个按钮供用户单击。

  1. 提货
  2. 发送至语音邮件
  3. 忽略
  4. 如果用户点击三个按钮中的任何一个,则Ajax请求被发送到服务器并且对话框成功关闭。

    但是,如果用户在对话框打开时获得另一个入站呼叫,则等待响应"我想显示另一个带有另一条消息的对话框。但我需要分配从服务器接收的呼叫ID""在打开之前的对话框,所以如果用户拿起他们的物理电话"没有点击对话框中的按钮"我会将dialog('close')发送给提供的ID以代表用户关闭,因为不再需要用户响应。 "我不想关闭所有对话框"

    注意我有服务器端轮询更新客户端"浏览器"当前的手机状态。所以使用这个我可以发出dialog('close'),但我希望我可以传递ID,以便客户端知道要关闭哪个对话框。

    在页面加载之前,在运行时创建/分配ID。

    由于我不知道在加载页面之前ID会是什么,我不能做这样的事情

    <div id="PhoneCallId" Title="Inbound Call" style="display: none;"></div>
    

    我希望我可以为方框beforOpen分配一个唯一的号码(例如123456),然后用唯一的ID 123456关闭该方框。

1 个答案:

答案 0 :(得分:0)

以下示例允许您使用.clone()模板元素追加副本添加到页面中。每次需要新对话框时都必须这样做。这应该是您项目的开始。

注意:克隆元素时,您可以在调用append()之前更改ID,而不会损坏您的网页。

var idCounter=0;
$('button').on('click', function(){
    idCounter++; //Generate new ID

    var diag = $('#PhoneCallId'); //Get Template
    var newDiag = $(diag.clone()); //Clone Id
  
    newDiag.attr('id','PhoneCallId' + idCounter); //Change ID
    newDiag.find(".dialogTitle").text('DIAGLOG ID = ' + idCounter);
  
    $('#dialogPlaceHolder').append(newDiag); //Append & Show It
  
    newDiag.show(); //Show it (you can call .dialog or other methods)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>CLICK ME TO ADD DIALOG!</button>

<div id="PhoneCallId" Title="Inbound Call" style="display: none;">DIALOG <label class="dialogTitle">TEMPLATE</label></div>

<div id="dialogPlaceHolder"></div>