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

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

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

  1. 拾起
  2. 发送到语音邮件
  3. 忽视

如果用户点击三个按钮中的任何一个,则会向服务器发送Ajax请求,并且成功时关闭对话框。

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

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

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

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

 

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

下面是一个示例,它允许您拥有一个Template元素,并使用.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) });