Как я могу добавить класс в тег тела, используя jQuery? - PullRequest
4 голосов
/ 07 января 2010

Позвольте мне уточнить мой вопрос и решение, которое я ищу. Я использую wikispaces.com, и я хотел бы динамически добавлять уникальный класс тела для каждой страницы, используя jQuery, который каким-то образом захватывает URL-адрес, а затем вставляет этот уникальный класс тела, который будет применяться специально и только для этой страницы. *

Итак, вот пример URL-адреса из моего вики-пространства ...

http://wikithemes.wikispaces.com/Audio+Page

Я бы хотел, чтобы jQuery захватил ... скажем, первое слово после .com /, которое на этой странице будет audio . Итак, jQuery, который мне нужен, будет применять класс audio к тегу body, вот так ...

<body class="audio">

В их документации может быть вставлен любой jQuery, поскольку он загружен по умолчанию. Но они поясняют, что вместо знака $, используемого в jQuery, он будет работать только внутри вики-пространств, если вместо него использовать слово jQuery . Вот так ...

jQuery(document).ready(function(){

Я действительно ценю любую помощь, которую вы можете оказать мне, чтобы заставить это работать. Спасибо!

Ответы [ 2 ]

2 голосов
/ 07 января 2010

Не уверен, каковы ваши ограничения в размещении кода. Я бы просто поместил это в <head> вашего документа и применил класс к элементу html вместо body, чтобы вы не получили FOUS или «Flash из неустановленного содержимого». Класс «присутствует» в элементе почти сразу после загрузки страницы, но до того, как он отобразится, если вы сделаете это следующим образом:

<script type="text/javascript">
    var loc = window.location.pathname.match(/^\/?(\w+)\b/);
    // document.documentElement is the html element, this adds the class
    if(loc) document.documentElement.className += " " + loc[1].toLowerCase();
</script>

Если вы действительно хотите использовать jQuery:

<script type="text/javascript">
    // jQuery is passed to the ready function as a parameter, so we alias it with $
    // This will work for you even with wikispaces
    jQuery(function($){
        var loc = window.location.pathname.match(/^\/?(\w+)\b/);
        if(loc) $(document.body).addClass(loc[1].toLowerCase());
    });
</script>
0 голосов
/ 07 января 2010

Обычный JavaScript:

jQuery(document).ready(function(){
    var urlPath = window.location.pathname;
    document.body.className = urlPath.match(/\/(.*?)(\+|$)/)[1].toLowerCase();

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...