IE8 вычитает неправильно в JavaScript / jQuery? - PullRequest
2 голосов
/ 10 апреля 2010

В каждом браузере, Win / Mac, Chrome, Safari, Firefox, Opera, IE6 и IE7 они ВСЕ получают следующий вывод консоли:

352

254

Но в IE8 я получаю:

414

434

454

474

Вот мой код JS / jQuery:

$('#top-breadcrumbs').children('a').each(function(i){
    if(!$(this).hasClass('permanent')){
        if(permItemWidth+rmItemWidth > $('#top-breadcrumbs').width()){
            $(this).addClass('removed');
            rmItemWidth = rmItemWidth-$(this).width()+20;
        }
    }
});

Лог-код, который у меня есть выше, записывает НОВОЕ rmItemWidth значение после его сброса в этом втором if

Ответы [ 2 ]

1 голос
/ 10 апреля 2010

Не видя весь код, ожидаемый результат не может быть определен.

Вместо этого я предлагаю написать действительный HTML-код, действительный CSS-код и выяснить, что нужно сделать, чтобы получить желаемый расчет.

Для стиля программирования jQuery характерно выделять что-то вроде этого:

$('#top-breadcrumbs').width()
  • внутри тела функции, которая вызывается в цикле.

Такой подход, который вы выбрали с помощью jQuery, очень неэффективен.

0 голосов
/ 10 апреля 2010

Я написал здесь, а потом, наконец, понял, играя с кодом. Итак, изменение? Ну, никакой реальный код не нужно было менять, ха-ха, IE8, на самом деле, я думаю, все сделал правильно ... как ни странно:

До:

$(this).addClass('removed');
rmItemWidth = rmItemWidth-$(this).width()+20;

После того, как:

rmItemWidth = rmItemWidth-$(this).width()+20;
$(this).addClass('removed');

Поскольку «this» удаляется в первой строке в before, технически это не имеет ширины. Вот почему он добавляет только 20 каждый раз ... IE8 действительно делает это правильно, и никто другой?!

...