Всякий раз, когда у вас есть тонна вызовов, которые вам нужно выполнить для определенного объекта DOM, обычно лучше обернуть функциональность в плагин jQuery.В долгосрочной перспективе ваш код будет более легок в обслуживании.
$(document).ready(function() {
$.extend({
myMouseScrollable: function() {
return this.each(function() {
var $self = $self;
var $jsPane = $self.find(".jsPane");
var OnMouseScroll = function(event, delta) {
$jsPane.animate({"left": "+=" + (50 * delta) + "px"}, 0);
$jsPane.css("left").replace(/[^-\d\.]/g, '') > 0 ? $jsPane.animate({"left": "0px"}, 0) : null;
$jsPane.css("left").replace(/[^-\d\.]/g, '') < (($self.find("#scrollText").css("width").replace(/[^-\d\.]/g, '') - $self.css("width").replace(/[^-\d\.]/g, '')) * -1) ? $jsPane.animate({"left": (($self.find("#scrollText").css("width").replace(/[^-\d\.]/g, '') - $self.css("width").replace(/[^-\d\.]/g, '')) * -1) + "px"}, 0) : null;
if($self.find(".jspTrack").css("width").replace(/[^-\d\.]/g, '') - $self.find(".jspDrag").css("width").replace(/[^-\d\.]/g, '') == $self.find(".jspDrag").css("left").replace(/[^-\d\.]/g, '')) {
//Track End - Right
} else if ($self.find(".jspDrag").css("left").replace(/[^-\d\.]/g, '') == 0) {
//Track End - Left
} else {
//Track Mid - Anywhere between ends
}**
}
$self.mousewheel(OnMouseScroll);
});
}
});
});
Теперь, когда вам нужно применить это событие к новому объекту, вы просто:
$("#horiz").myMouseScrollable();
Я взял некоторые возможности оптимизациис кодом, который вы имели.Это всегда хорошая идея, чтобы кэшировать ваши селекторы, а не использовать их снова и снова.
в частности повторные вызовы $self.find('.jsPane');