Без конкретного примера на jsfiddle сложно понять, что не так, но главное подозрение падает на установку mousemove внутри другого обработчика. На первый взгляд, всё должно работать, но по симптомам проблема именно здесь. Да и в принципе это ненужное усложнение, спокойно можно обойтись без него.
По поводу замечаний по коду - у вас довольно много ошибок начинающего: весь код одной лапшой, полно магических цифр, названия переменных неинформативные, никакой инкапсуляции. Например, я так и не смог понять, каким элементом карусели является brick - это карточка, кнопка листания, что-то ещё?
В первом приближении должно быть что-то похожее на это:
spoilervar carousel = (function() {
var isInsideCarousel = false,
brickPos = 0,
magicNumbers = {
first: 8, // Количество элементов в ряду?
second: 3, // Количество рядов?
third: 5, // Какой-то padding родительского контейнера?
fourth: 790, // Ширина контейнера?
fifth: 0, // Левая граница страницы?
},
$brick, offset, target;
function turnOn(e) {
console.log("DOWN");
isInsideCarousel = true;
offset = e.pageX;
target = $(this).parent().siblings(".product-carousel-container");
}
function turnOff() {
console.log("UP");
isInsideCarousel = false;
brickPos = parseInt($(brick).css("left"), 10);
}
function scroll(e) {
var relX, move;
if (!isInsideCarousel) {
return;
}
relX = e.pageX - offset + brickPos;
move = -relX * magicNumbers.first / magicNumbers.second;
console.log(relX);
$(brick).css("left", relX);
$(target).css("left", move);
if (relX <= magicNumbers.fifth) {
$(brick).css("left", magicNumbers.fifth);
$(target).css("left", magicNumbers.fifth);
} else if (relX >= magicNumbers.fourth - magicNumbers.third) {
$(brick).css("left", magicNumbers.fourth);
$(target).css("left", -1 * magicNumbers.fourth * magicNumbers.first / magicNumbers.second);
}
}
return function($el) {
$brick = $el;
$el.mousedown(turnOn);
$(document).mousemove(scroll);
$(document).mouseup(turnOff);
}
}());
$(document).ready(function() {
carousel($(".brick"));
});
Бонусным уровнем было бы обернуть это всё в jquery-плагин, но я не стал этого делать.