Это происходит, когда вы пытаетесь получить доступ к элементу массива с синтаксисом с квадратной скобкой, но вы делаете это по строке, а не по массиву, поэтому операция явно не имеет смысла .
Пример:
$var = "test";
echo $var["a_key"];
Если вы считаете, что переменная должна быть массивом, см., где она появляется и исправить там проблему.
Можно использовать parseInt () функция для преобразования строки в число, например:
parseInt($('#elem').css('top'));
Обновление: (как предложил Ben): необходимо дать основание также:
parseInt($('#elem').css('top'), 10);
Силы это, чтобы быть проанализированным как десятичное число, иначе строковое начало '0' могло бы быть проанализировано как восьмеричное число (мог бы зависеть от используемого браузера).