2010-02-20 78 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