2012-03-06 3 views
0

私はjquery-uiを使用してダイアログウィンドウを作成しています。ダイアログに表示されるdivにはクラス 'dialog'があります。jquery-uiダイアログ、ダイアログウィンドウの外のdivにのみCSSを適用するには?

私たちが最初のHTMLを見てみましょう:

<div class="click_me"> 
Click Me 
</div><!-- end of class click_me--> 


<div class="dialog"> 

this is my dialog 

</div> 

CSSやJavaScriptのフォロー:

<style type="text/css"> 

.click_me{ 
    width:120px; 
    border:1px solid red; 
    text-align:center; 

    } 


.dialog{ 

    width:230px; 
    border:1px solid green; 
    text-align:center; 


    } 

</style> 

<script type="text/javascript" src="js/jquery-1.7.1.js"></script> 
<script type="text/javascript" src="js/jquery-ui-1.8.16.custom.min.js"></script> 


<script type="text/javascript"> 

$(document).ready(function(){ 

$(".click_me").click(function(){ 

    dialog_my= $(".dialog").clone(false); 
    dialog_my.dialog(); 
    $(".dialog",  dialog_my).css('width','450px'); 


    } 


); 


    }); 


</script> 

しかしライン$(".dialog", dialog_my).css('width','450px');は効果がありません。コンテキストを省略してコードを$(".dialog").css('width','450px');と書くと、CSSはフラットなWebページとモーダルウィンドウの両方に適用されます。

モーダルウィンドウでのみCSSを適用できますか?

答えて

0

dialogのdivはdialog_myにあります。 divです。ただ置く:

dialog_my.css('width','450px');

またはより良いを、連鎖する方法で:

 
dialog_my = $(".dialog").clone(false).dialog().css('width','450px'); 
+0

papaiatisさんの返信で私の​​コメントをご覧ください。 –

+1

jQueryはdivの中のdivを見つけようとしています。最も外側のdivはDOMのトラバーサルの一部ではありません。 [this fiddle](http://jsfiddle.net/DCYNk/)からわかるように、CSSはdivには適用されません。 –

1

をあなたが唯一のダイアログにいくつかの幅を与えたい場合は、これを使用することができます:

dialog_my.dialog({width:450});

+0

ここに[例](http://jsfiddle.net/YUK8r/)。 – scessor

+0

@papaiatis、なぜコンテキストとのラインはうまく機能しないのでしょうか?私はdivが最も外側のdivでない場合、コンテキストが動作すると考えていると思う。 –

+0

オブジェクト 'dialog_my'に' dialog'クラスの要素がありません。次のようにチェックすることができます: 'alert(dialog_my.html());' – papaiatis

0

jQuery UIは、DOMエレメントにさまざまなクラスを追加して.dialog()-callを動作させます。これを使用して、必要な要素だけをスタイルすることができます。

.ui-dialog { 
    width: 450px; 
} 

それともJavascriptをCSS

$('.ui-dialog').width(450); 

公式plugin descriptionのタブをテーマ設定は、あなたが変更することができますより多くの事を示しています。

関連する問題