2012-07-03 106 views
5

如何將標識添加到特定對話框? 我只是想申請單獨的樣式每個對話,並嘗試做這樣的:body標籤內創建JQuery UI添加標識到對話框

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和我不能申請風格吧。

回答

7

如果你的目標只是在CSS中使用這個ID,你可以用CSS類來實現。

dialogClass選項允許您指定一個將應用於對話框的類。然後,您可以在選擇器中使用此類爲特定對話框應用不同的樣式。

+1

我試着類,它的工作對我來說。謝謝。但是ID在我看來是更好的 - 它比類選擇器有更高的優先級。這就是爲什麼我在尋找添加ID的能力。 – Vladimir

+0

是的,但由於API沒有提供任何ID,所以你必須使用一個類,或者進行破解。如果你確實需要一個ID,你可以使用下面的黑客(但有點骯髒)。剛剛打開彈出窗口後,您可以刪除該類並添加該ID。 $(「。your-class」)。removeClass(「。your-class」)。attr(「id」,「your-id」)。不過,我認爲使用一個你想要一個ID的類所造成的「髒兮兮」會比這種可怕的黑客傷害更少。你總是可以通過重複整個規則來增加規則的優先級 –

1

您的示例代碼中的問題是您將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'); 
+0

以及它應該如何正確完成? – Vladimir

+0

有很多選擇。我個人會將'id'包含在HTML本身中,在你的'order_mini_site_form'中。您也可以使用一個CSS類作爲另一個回答者提及的'dialogClass'選項。作爲最後一個選項,如果你只在頁面上有一個對話框,你可以使用'ui-dialog'類,jQuery UI已經放在對話框中。例如'ui-dialog {color:yellow; }'會使對話框上的所有文字變成黃色。 –

9

晚了一點,但是這是怎麼能夠做到:

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

$( '#placeholderId')對話框( '工具')給你周圍的<。對話框的div >,這很可能是您要設置ID的元素。

+1

我發現它瘋了,jQuery對話框沒有選擇向父級添加類/標識。我的意思是,完全瘋了。另外瘋狂的是事實對話框沒有容器(除了外部容器)的標題和內容分區... –

+0

最好的辦法做到這一點。 –

0

我不同意投票的答案(不是個人攻擊只是不同意「骯髒的黑客」部分)。他確實沒有jQuery對話框的ID選項,但是如果您得出結論認爲ID是必需的,則下面的代碼應該足夠了。我正在開發的導遊JS非常需要這樣的ID。

//這裏我聲明瞭動態插入的內容[例如什麼我創建]有tempstep的ID,這將是與下面的調用中使用的ID添加到jQuery的對話框

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

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