2010-02-20 77 views
0

我在我的網站上使用jQuery UI datepicker,希望它的樣式略有不同,具體取決於它所在的頁面。 但是,我有一個小問題,因爲包含日曆的div不是嵌套到.datepicker()函數應用於的元素。所以我不能每頁都以不同的樣式。例如。每頁樣式jQuery UI Datepicker

<body> 
<div id="wrapper">...</div> 
<div id="datepicker">...</div> 
</body> 

我知道一個解決方案是根據ID頁面上的身體,但我真的不希望這樣做,因爲我使用的是CMS,目前其添加類包裝div來確定哪些網頁。但是,由於datepicker div出現在包裝外,我無法適當地設計樣式。

是一種配置datepicker在特定div內創建日曆div的方法,或者我將不得不身份id身份?

謝謝

回答

1

您可以使用jquery添加一個類到#datepicker。

$("#wrapper.pageClass").nextAll("#datepicker").addClass("someClass"); 

編輯:

或者你可以換用#datepicker使用jquery一個div。如果#wrapper只定義了一個類,以下方法可能會有效。

var pageClass = $("#wrapper").attr("class"); 
$("#datepicker").wrap("<div class='" + pageClass + "' />" 
1

如果我讀這一權利,並且它是一個漫長的一天,你有一個非常簡單的選擇,但它確實需要一點點額外加價。給bodyi d(不同的ID爲每個頁面):

body#pageOne #datepicker {/* css for pageOne */} 

body#pageTwo #datepicker {/* css for pageTwo */} 

如果沒有其他的你給一點額外的語義信息;儘管它可能不像你想的那麼容易。

或者,正如在評論中指出的(感謝@Bryan Downing)如果你不想添加和idbody,你可以使用jQuery來實現類似的東西,但它取決於你如何CMS類適用於#wrapper。但這樣的事情:

$(document).ready(
    function() { 

     var pageClass = $('#wrapper').attr('class'); 

     $('#datepicker').addClass(pageClass); 
    } 
); 

然後,希望,應該讓你的目標,像這樣的CSS:

#datepicker.pageOneClassName {/* css */} 

#datepicker.pageTwoClassName {/* css */} 

但很明顯這依賴於一個連貫的和可預測/知,命名策略存在由CMS應用。雖然這跟Bryan's answer非常接近,但我還是贊成他的。儘管我會將它留在原地,因爲它提供了一個稍微不同的解決方案。

+1

他的問題是他試圖避免向身體添加身份證。不知道除了用jquery添加一個類或用特定的div封裝#datepicker之外,還有其他的方法可以做到這一點。 – 2010-02-20 21:49:26

+0

@Bryan,+1 ...我不能*相信*我錯過了... D'哦! * Loooong *天... =/ – 2010-02-21 00:11:56

+0

謝謝!無論如何,我更喜歡你的方式。在#datepicker周圍包裹另一個DOM元素似乎沒有必要。你添加班級的方式比我的更清潔。我不知道爲什麼我沒有想到將#wrapper中的類添加到#datepicker中。我猜你並不是唯一一個漫長的一天...:P – 2010-02-22 06:23:10