Просто поменяйте селектор на 'tbody tr'. codepen.io/Karpov/pen/EjLVoE
Ну и еще бы хорошо при поиске приводить текст в один регистр. Либо все в заглавные буквы, либо все к строчным. Иначе поиск производится по точному совпадению, учитывая регистр написания.
Я предлагаю вам ваши объекты обернуть в еще один и проводить манипуляции с ним, а не с массивом. Т.е. будет это выглядеть примерно так:
var obj = {
innerObj1: { "test1": 1, "test2": 2 },
innerObj2: { "test3": 3 },
innerObj3: { "test4": 4, "test5": 5 }
}
перед тем как заносить в куки делаете из этого объекта строку: JSON.stringify(obj), а когда вытаскиваете обратную операцию JSON.parse(str);
Значения записываете как в простой объект. Если все ваши объекты хранятся в объекте obj, то что бы добавить значение просто добавляете или переписываете свойство obj['innerObj1']["test1"] =1, например.
Что бы получить значение в цикле соответственно obj[key] .
Суть в том что при обновлении значения после выполнения условий анимация еще не завершилась, а значение уже присвоено. Т.е. пока движется switcher значение toogleBut2 уже обновлено, и это происходит так быстро что оно остается равным 10px.
Короче говоря надо использовать callback функцию метода animate().
Вот ссылка, я там что то удалил, но суть таже jsfiddle.net/bonilka/zrhqnLcq
jsfiddle.net/58yLm6hg