jQuery addClass к текущей странице навигации не работает в IE7 - PullRequest
1 голос
/ 31 января 2012

Обновление Благодаря тому, что @mrtsherman проверил, что мой код был в порядке, я углубился в CSS и обнаружил, что без особой причины, т.е. 7, хотел немного дополнительного отступа внизу.Вот почему я ненавижу ie7.

У меня есть довольно простой код, автоматически добавляющий класс в элемент навигации, соответствующий текущей странице.Работает нормально во всех браузерах, включая ie8 и ie9, но, похоже, просто не работает в ie7.Кто сломан, т.е. 7 или я?

html:

<div id="navbar">
<ul>
<li class="navitem"><a href="about.html">about us</a></li><!--navitems-->
<li class="navitem"><a href="purchase.html">purchase</a></li><!--navitems-->
<li class="navitem"><a href="sales.html">sales</a></li><!--navitems-->
<li class="navitem"><a href="contact.html">contact</a></li><!--navitems-->
</ul>
</div><!--navbar-->

js file

$(function(){
        var full_url = document.URL; 
        var url_array = full_url.split('/')
        var $last_segment = url_array[url_array.length-1]; 
        $('#navbar li a').each(function(){
            var $href = $(this).attr('href');
            if ( ($href == $last_segment) || ($href == '') ) {
                $(this).addClass('curr');
            } else {
                $(this).removeClass('curr');
            }
        });
    });

1 Ответ

1 голос
/ 31 января 2012

Чем больше я думаю об этом, тем больше я думаю, что проблема связана с разделением вашего URL. Если есть косая черта, то $last_segment будет пустой строкой, поэтому никогда не будет совпадать. Вы должны проверить и урезать это перед разделением.

http://jsfiddle.net/zGbJx/2/

var full_url = "http://www.mysite.com/contacts.html/";
var full_url = "http://www.mysite.com/contacts.html";
//trim trailing slash
if (full_url.charAt(full_url.length - 1) == '/') {
    full_url = full_url.substring(0, full_url.length - 1);
}
...