有没有办法在运行时为jQuery dialog box分配唯一值,以便我可以使用分配的ID分别跟踪每个对话框?
我正在尝试与电话系统进行交互,在有电话呼入时我会显示一个对话框。该对话框将有3个按钮供用户单击。
如果用户点击三个按钮中的任何一个,则Ajax
请求被发送到服务器并且对话框成功关闭。
但是,如果用户在对话框打开时获得另一个入站呼叫,则等待响应"我想显示另一个带有另一条消息的对话框。但我需要分配从服务器接收的呼叫ID""在打开之前的对话框,所以如果用户拿起他们的物理电话"没有点击对话框中的按钮"我会将dialog('close')
发送给提供的ID以代表用户关闭,因为不再需要用户响应。 "我不想关闭所有对话框"
注意我有服务器端轮询更新客户端"浏览器"当前的手机状态。所以使用这个我可以发出dialog('close')
,但我希望我可以传递ID,以便客户端知道要关闭哪个对话框。
在页面加载之前,在运行时创建/分配ID。
由于我不知道在加载页面之前ID会是什么,我不能做这样的事情
<div id="PhoneCallId" Title="Inbound Call" style="display: none;"></div>
我希望我可以为方框beforOpen
分配一个唯一的号码(例如123456),然后用唯一的ID 123456关闭该方框。
答案 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>