6

如何将 id 添加到特定对话框?我只想为每个对话框应用单独的样式并尝试这样做:

var $order_dialog = $("<%= escape_javascript(render('order_mini_site_form', :layout => false)) %>");

var current_dialog = $order_dialog.dialog({
  width: 515,
  height: 575,
  modal: true,
  resizable: false,
  draggable: false,
  title: false,
  autoOpen: true,
  closeOnEscape: false,
  buttons: [
    { text: "Отправить запрос" , click: function() { $(this).find('form').submit();    $(this).dialog('close'); } },
    { text: "Отмена", click: function() { $(this).dialog('close'); } }
  ]
}).parent().find('.ui-dialog-titlebar').remove();


$current_dialog.attr('id', 'awesome_dialog');

但是在没有id的body标签内创建了对话框,我无法为其应用样式。

4

4 回答 4

11

有点晚了,但这是可以做到的:

$('#placeholderId').dialog('widget').attr('id', 'dialogId');

$('#placeholderId').dialog('widget')为您提供对话框周围的 <div>,这很可能是您要设置 ID 的元素。

于 2013-04-11T13:34:33.567 回答
9

如果您的目标只是在 css 中使用此 id,则可以改为使用 css 类来实现。

dialogClass选项允许您指定将应用于对话框的类。然后,您可以在选择器中使用此类为特定对话框应用不同的样式。

于 2012-07-03T10:24:28.510 回答
2

您的示例代码中的问题是您正在将id结果添加到.find('.ui-dialog-titlebar').remove()而不是对话框本身。以下内容应该适合您。

var $order_dialog = $("<%= escape_javascript(render('order_mini_site_form', :layout => false)) %>");

var current_dialog = $order_dialog.dialog({
  width: 515,
  height: 575,
  modal: true,
  resizable: false,
  draggable: false,
  id: "ololo",
  title: false,
  autoOpen: true,
  closeOnEscape: false,
  buttons: [
    { text: "Отправить запрос" , click: function() { $(this).find('form').submit();                $(this).dialog('close'); } },
    { text: "Отмена", click: function() { $(this).dialog('close'); } }
  ]
})

$current_dialog.parent().find('.ui-dialog-titlebar').remove();
$current_dialog.attr('id', 'awesome_dialog');
于 2012-07-03T10:32:29.950 回答
0

我不同意投票的答案(不是人身攻击,只是不同意“肮脏的黑客”部分)。确实,jquery Dialog Box 没有 ID 选项,但是如果您得出 ID 是必要的结论,那么下面的代码就足够了。我正在开发的导游 JS 非常需要这样的 ID。

// 这里我声明动态插入的内容[例如我正在创建的内容] 具有 tempstep 的 ID,这将与下面的调用一起用于向 jQuery 对话框添加一个 ID

代码 :jQuery ('<div id="tempstep"></div>').dialog({

代码 :jQuery('#tempstep').parent().attr("id","dialogBox");

于 2013-07-02T18:04:19.800 回答