проблема с функцией jCuery addClass - PullRequest
0 голосов
/ 16 мая 2011
<script>    
$("ul#sol_menu li a").addClass(function()) {
var current_page = document.location.href;
if ($(this).attr.("href").match(current_page)) {
$(this).addClass('highlight');
};
});
</script>

Что с этим не так?

Ответы [ 2 ]

5 голосов
/ 16 мая 2011

Я полагаю, что это может быть то, что вы хотели ...
И, как указал SLaks, ваш синтаксис (в данном случае) немного ужасен ...

<script>    
    $(document).ready(function(){
        var current_page = document.location.href;
        $("ul#sol_menu li a").each(function(){
            if ($(this).attr('href') == current_page) {
                $(this).addClass('highlight');
            }
        });
    });
</script>

Итак, чтобы ответить на ваш вопрос ... с вашим кодом было неверно:

  1. В зависимости от того, ваш сценарий или нет тег был до или после вашего ul элемент, вам нужно использовать $ (документ) .ready функция
  2. Вы неправильно использовали обратный вызов addClass ...
  3. У вас была дополнительная скобка при обратном вызове addClass "addClass (function ()) {" должно было быть "addClass (function () {"
  4. Нет метода .match, подобного тому, который вы использовали ...
  5. У вас возникла синтаксическая ошибка: '.Attr ( "HREF").'; нет периода после '.Attr'

    Надеюсь, что это отвечает на ваш вопрос.
4 голосов
/ 16 мая 2011

Я думаю, это то, что вы пытаетесь сделать, с комментариями, надеюсь, вы узнаете что-нибудь о Javascript / jQuery:

// when DOM is ready
$(function(){    

    // cache current URL
    var current_page = document.location.href;

    // use .each method to check link hrefs against current location
    $("ul#sol_menu li a").each(function () {

        // if this link is for the current page, highlight it
        if (current_page.indexOf(this.href) >= 0) {
            $(this).addClass('highlight');
        };

    });

});
...