В IE7 ваша ширина возвращается в виде строки и не анализируется в IE, я думаю
попробуйте что-то вроде
var w = $("ul").width();
if ($.browser.msie && parseInt($.browser.version, 10) <= 6) {
w = parseFloat(w);
}
или вы могли бы сократить его
var w = ($.browser.msie && parseInt($.browser.version, 10) <= 6) ?
parseFloat($("ul").width()) : $("ul").width();
или очень коротко, и, вероятно, не слишком больно,: P
var w = parseFloat($("ul").width());