/* * jQuery liMarquee v 4.6 * * Copyright 2013, Linnik Yura | LI MASS CODE | http://masscode.ru * http://masscode.ru/index.php/k2/item/44-limarquee * Free to use * * Last Update 20.11.2014 */ (function ($) { var methods = { init: function (options) { var p = { direction: 'left', //校泻邪蟹褘胁邪械褌 薪邪锌褉邪胁谢械薪懈械 写胁懈卸械薪懈褟 褋芯写械褉卸懈屑芯谐芯 泻芯薪褌械泄薪械褉邪 (left | right | up | down) loop: -1, //袟邪写邪械褌, 褋泻芯谢褜泻芯 褉邪蟹 斜褍写械褌 锌褉芯泻褉褍褔懈胁邪褌褜褋褟 褋芯写械褉卸懈屑芯械. "-1" 写谢褟 斜械褋泻芯薪械褔薪芯谐芯 胁芯褋锌褉芯懈蟹胁械写械薪懈褟 写胁懈卸械薪懈褟 scrolldelay: 0, //袙械谢懈褔懈薪邪 蟹邪写械褉卸泻懈 胁 屑懈谢谢懈褋械泻褍薪写邪褏 屑械卸写褍 写胁懈卸械薪懈褟屑懈 scrollamount: 50, //小泻芯褉芯褋褌褜 写胁懈卸械薪懈褟 泻芯薪褌械薪褌邪 (px/sec) circular: true, //袝褋谢懈 "true" - 褋褌褉芯泻邪 薪械锌褉械褉褘胁薪邪褟 drag: true, //袝褋谢懈 "true" - 胁泻谢褞褔械薪芯 锌械褉械褌邪褋泻懈胁邪薪懈械 褋褌褉芯泻懈 runshort: true, //袝褋谢懈 "true" - 泻芯褉芯褌泻邪褟 褋褌褉芯泻邪 褌芯卸械 "斜械谐邪械褌", "false" - 褋褌芯懈褌 薪邪 屑械褋褌械 hoverstop: true, //true - 褋褌褉芯泻邪 芯褋褌邪薪邪胁谢懈胁邪械褌褋褟 锌褉懈 薪邪胁械写械薪懈懈 泻褍褉褋芯褉邪 屑褘褕懈, false - 褋褌褉芯泻邪 薪械 芯褋褌邪薪邪胁谢懈胁邪械褌褋褟 inverthover: false, //false - 褋褌邪薪写邪褉褌薪芯械 锌芯胁械写械薪懈械. 袝褋谢懈 "true" - 褋褌褉芯泻邪 薪邪褔懈薪邪械褌 写胁懈卸械薪懈械 褌芯谢褜泻芯 锌褉懈 薪邪胁械写械薪懈懈 泻褍褉褋芯褉邪 xml: false //袩褍褌褜 泻 xml 褎邪泄谢褍 褋 薪褍卸薪褘屑 褌械泻褋褌芯屑 }; if (options) { $.extend(p, options); } return this.each(function () { var enterEvent = 'mouseenter'; var leaveEvent = 'mouseleave'; if(p.inverthover){ enterEvent = 'mouseleave'; leaveEvent = 'mouseenter'; } var loop = p.loop, strWrap = $(this).addClass('str_wrap').data({scrollamount:p.scrollamount}), fMove = false; var strWrapStyle = strWrap.attr('style'); if(strWrapStyle){ var wrapStyleArr = strWrapStyle.split(';'); var startHeight = false; for(var i=0; i < wrapStyleArr.length; i++){ var str = $.trim(wrapStyleArr[i]); var tested = str.search(/^height/g); if(tested != -1){ startHeight = parseFloat(strWrap.css('height')); } } } var code = function () { strWrap.off('mouseleave'); strWrap.off('mouseenter'); strWrap.off('mousemove'); strWrap.off('mousedown'); strWrap.off('mouseup'); if(!$('.str_move',strWrap).length){ strWrap.wrapInner($('
').addClass('str_move')); } var strMove = $('.str_move', strWrap).addClass('str_origin'), strMoveClone = strMove.clone().removeClass('str_origin').addClass('str_move_clone'), time = 0; if (!p.hoverstop) { strWrap.addClass('noStop'); } var circCloneHor = function(){ strMoveClone.clone().css({ left:'100%', right:'auto', width: strMove.width() }).appendTo(strMove); strMoveClone.css({ right: '100%', left:'auto', width: strMove.width() }).appendTo(strMove); } var circCloneVert = function(){ strMoveClone.clone().css({ top: '100%', bottom:'auto', height: strMove.height() }).appendTo(strMove); strMoveClone.css({ bottom: '100%', top:'auto', height:strMove.height() }).appendTo(strMove); } if (p.direction == 'left') { strWrap.height(strMove.outerHeight()) if (strMove.width() > strWrap.width()) { var leftPos = -strMove.width(); if (p.circular) { if (!p.xml) { circCloneHor() leftPos = -(strMove.width() + (strMove.width() - strWrap.width())); } } if (p.xml) { strMove.css({ left:strWrap.width() }) } var strMoveLeft = strWrap.width(), k1 = 0, timeFunc1 = function () { var fullS = Math.abs(leftPos), time = (fullS / strWrap.data('scrollamount')) * 1000; if (parseFloat(strMove.css('left')) != 0) { fullS = (fullS + strWrap.width()); time = (fullS - (strWrap.width() - parseFloat(strMove.css('left')))) / strWrap.data('scrollamount') * 1000; } return time; }, moveFuncId1 = false, moveFunc1 = function () { if (loop != 0) { strMove.stop(true).animate({ left: leftPos }, timeFunc1(), 'linear', function () { $(this).css({ left: strWrap.width() }); if (loop == -1) { moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay); } else { loop--; moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay); } }); } }; strWrap.data({ moveId: moveFuncId1 , moveF : moveFunc1 }) if(!p.inverthover){ moveFunc1(); } if (p.hoverstop) { strWrap.on(enterEvent, function () { $(this).addClass('str_active'); clearTimeout(moveFuncId1); strMove.stop(true); }).on(leaveEvent, function () { $(this).removeClass('str_active'); $(this).off('mousemove'); moveFunc1(); }); if (p.drag) { strWrap.on('mousedown', function (e) { if(p.inverthover){ strMove.stop(true); } //drag var dragLeft; var dir = 1; var newX; var oldX = e.clientX; //drag strMoveLeft = strMove.position().left; k1 = strMoveLeft - (e.clientX - strWrap.offset().left); $(this).on('mousemove', function (e) { fMove = true; //drag newX = e.clientX; if(newX > oldX){ dir = 1 }else{ dir = -1 } oldX = newX dragLeft = k1 + (e.clientX - strWrap.offset().left); if (!p.circular) { if(dragLeft < -strMove.width() && dir < 0){ dragLeft = strWrap.width(); strMoveLeft = strMove.position().left; k1 = strMoveLeft - (e.clientX - strWrap.offset().left); } if(dragLeft > strWrap.width() && dir > 0){ dragLeft = -strMove.width(); strMoveLeft = strMove.position().left; k1 = strMoveLeft - (e.clientX - strWrap.offset().left); } }else{ if(dragLeft < -strMove.width() && dir < 0){ dragLeft = 0; strMoveLeft = strMove.position().left; k1 = strMoveLeft - (e.clientX - strWrap.offset().left); } if(dragLeft > 0 && dir > 0){ dragLeft = -strMove.width(); strMoveLeft = strMove.position().left; k1 = strMoveLeft - (e.clientX - strWrap.offset().left); } } strMove.stop(true).css({ left: dragLeft }); //drag }).on('mouseup', function () { $(this).off('mousemove'); if(p.inverthover){ strMove.trigger('mouseenter') } setTimeout(function () { fMove = false }, 50) }); return false; }) .on('click', function () { if (fMove) { return false } }); } else { strWrap.addClass('no_drag'); }; } } else { if (p.runshort) { strMove.css({ left: strWrap.width() }); var strMoveLeft = strWrap.width(), k1 = 0, timeFunc = function () { time = (strMove.width() + strMove.position().left) / strWrap.data('scrollamount') * 1000; return time; }; var moveFunc = function () { var leftPos = -strMove.width(); strMove.animate({ left: leftPos }, timeFunc(), 'linear', function () { $(this).css({ left: strWrap.width() }); if (loop == -1) { setTimeout(moveFunc, p.scrolldelay); } else { loop--; setTimeout(moveFunc, p.scrolldelay); } }); }; strWrap.data({ moveF : moveFunc }) if(!p.inverthover){ moveFunc(); } if (p.hoverstop) { strWrap.on(enterEvent, function () { $(this).addClass('str_active'); strMove.stop(true); }).on(leaveEvent, function () { $(this).removeClass('str_active'); $(this).off('mousemove'); moveFunc(); }); if (p.drag) { strWrap.on('mousedown', function (e) { if(p.inverthover){ strMove.stop(true); } //drag var dragLeft; var dir = 1; var newX; var oldX = e.clientX; //drag strMoveLeft = strMove.position().left; k1 = strMoveLeft - (e.clientX - strWrap.offset().left); $(this).on('mousemove', function (e) { fMove = true; //drag newX = e.clientX; if(newX > oldX){ dir = 1 }else{ dir = -1 } oldX = newX dragLeft = k1 + (e.clientX - strWrap.offset().left); if(dragLeft < -strMove.width() && dir < 0){ dragLeft = strWrap.width(); strMoveLeft = strMove.position().left; k1 = strMoveLeft - (e.clientX - strWrap.offset().left); } if(dragLeft > strWrap.width() && dir > 0){ dragLeft = -strMove.width(); strMoveLeft = strMove.position().left; k1 = strMoveLeft - (e.clientX - strWrap.offset().left); } strMove.stop(true).css({ left: dragLeft }); }).on('mouseup', function () { if(p.inverthover){ strMove.trigger('mouseenter') } $(this).off('mousemove'); setTimeout(function () { fMove = false }, 50) }); return false; }) .on('click', function () { if (fMove) { return false } }); } else { strWrap.addClass('no_drag'); }; } } else { strWrap.addClass('str_static'); } }; }; if (p.direction == 'right') { strWrap.height(strMove.outerHeight()) strWrap.addClass('str_right'); strMove.css({ left: -strMove.width(), right: 'auto' }) if (strMove.width() > strWrap.width()) { var leftPos = strWrap.width(); strMove.css({ left: 0 }) if (p.circular) { if (!p.xml) { circCloneHor() //袨锌褉械写械谢褟械屑 泻褉邪泄薪褞褞 褌芯褔泻褍 leftPos = strMove.width(); } } var k2 = 0; timeFunc = function () { var fullS = strWrap.width(), //泻褉邪泄薪褟褟 褌芯褔泻邪 time = (fullS / strWrap.data('scrollamount')) * 1000; //胁褉械屑褟 if (parseFloat(strMove.css('left')) != 0) { fullS = (strMove.width() + strWrap.width()); time = (fullS - (strMove.width() + parseFloat(strMove.css('left')))) / strWrap.data('scrollamount') * 1000; } return time; }; var moveFunc = function () { if (loop != 0) { strMove.animate({ left: leftPos }, timeFunc(), 'linear', function () { $(this).css({ left: -strMove.width() }); if (loop == -1) { setTimeout(moveFunc, p.scrolldelay); } else { loop--; setTimeout(moveFunc, p.scrolldelay); }; }); }; }; strWrap.data({ moveF : moveFunc }) if(!p.inverthover){ moveFunc(); } if (p.hoverstop) { strWrap.on(enterEvent, function () { $(this).addClass('str_active'); strMove.stop(true); }).on(leaveEvent, function () { $(this).removeClass('str_active'); $(this).off('mousemove'); moveFunc(); }); if (p.drag) { strWrap.on('mousedown', function (e) { if(p.inverthover){ strMove.stop(true); } //drag var dragLeft; var dir = 1; var newX; var oldX = e.clientX; //drag strMoveLeft = strMove.position().left; k2 = strMoveLeft - (e.clientX - strWrap.offset().left); $(this).on('mousemove', function (e) { fMove = true; //drag newX = e.clientX; if(newX > oldX){ dir = 1 }else{ dir = -1 } oldX = newX dragLeft = k2 + (e.clientX - strWrap.offset().left); if (!p.circular) { if(dragLeft < -strMove.width() && dir < 0){ dragLeft = strWrap.width(); strMoveLeft = strMove.position().left; k2 = strMoveLeft - (e.clientX - strWrap.offset().left); } if(dragLeft > strWrap.width() && dir > 0){ dragLeft = -strMove.width(); strMoveLeft = strMove.position().left; k2 = strMoveLeft - (e.clientX - strWrap.offset().left); } }else{ if(dragLeft < -strMove.width() && dir < 0){ dragLeft = 0; strMoveLeft = strMove.position().left; k2 = strMoveLeft - (e.clientX - strWrap.offset().left); } if(dragLeft > 0 && dir > 0){ dragLeft = -strMove.width(); strMoveLeft = strMove.position().left; k2 = strMoveLeft - (e.clientX - strWrap.offset().left); } } strMove.stop(true).css({ left: dragLeft }); }).on('mouseup', function () { if(p.inverthover){ strMove.trigger('mouseenter') } $(this).off('mousemove'); setTimeout(function () { fMove = false }, 50) }); return false; }) .on('click', function () { if (fMove) { return false } }); } else { strWrap.addClass('no_drag'); }; } } else { if (p.runshort) { var k2 = 0; var timeFunc = function () { time = (strWrap.width() - strMove.position().left) / strWrap.data('scrollamount') * 1000; return time; }; var moveFunc = function () { var leftPos = strWrap.width(); strMove.animate({ left: leftPos }, timeFunc(), 'linear', function () { $(this).css({ left: -strMove.width() }); if (loop == -1) { setTimeout(moveFunc, p.scrolldelay); } else { loop--; setTimeout(moveFunc, p.scrolldelay); }; }); }; strWrap.data({ moveF : moveFunc }) if(!p.inverthover){ moveFunc(); } if (p.hoverstop) { strWrap.on(enterEvent, function () { $(this).addClass('str_active'); strMove.stop(true); }).on(leaveEvent, function () { $(this).removeClass('str_active'); $(this).off('mousemove'); moveFunc(); }); if (p.drag) { strWrap.on('mousedown', function (e) { if(p.inverthover){ strMove.stop(true); } //drag var dragLeft; var dir = 1; var newX; var oldX = e.clientX; //drag strMoveLeft = strMove.position().left; k2 = strMoveLeft - (e.clientX - strWrap.offset().left); $(this).on('mousemove', function (e) { fMove = true; //drag newX = e.clientX; if(newX > oldX){ dir = 1 }else{ dir = -1 } oldX = newX dragLeft = k2 + (e.clientX - strWrap.offset().left); if(dragLeft < -strMove.width() && dir < 0){ dragLeft = strWrap.width(); strMoveLeft = strMove.position().left; k2 = strMoveLeft - (e.clientX - strWrap.offset().left); } if(dragLeft > strWrap.width() && dir > 0){ dragLeft = -strMove.width(); strMoveLeft = strMove.position().left; k2 = strMoveLeft - (e.clientX - strWrap.offset().left); } strMove.stop(true).css({ left:dragLeft }); }).on('mouseup', function () { if(p.inverthover){ strMove.trigger('mouseenter') } $(this).off('mousemove'); setTimeout(function () { fMove = false }, 50) }); return false; }) .on('click', function () { if (fMove) { return false } }); } else { strWrap.addClass('no_drag'); }; } } else { strWrap.addClass('str_static'); } }; }; if (p.direction == 'up') { strWrap.addClass('str_vertical'); if (strMove.height() > strWrap.height()) { var topPos = -strMove.height(); if (p.circular) { if (!p.xml) { circCloneVert(); topPos = -(strMove.height() + (strMove.height() - strWrap.height())); } } if (p.xml) { strMove.css({ top:strWrap.height() }) } var k2 = 0; timeFunc = function () { var fullS = Math.abs(topPos), time = (fullS / strWrap.data('scrollamount')) * 1000; if (parseFloat(strMove.css('top')) != 0) { fullS = (fullS + strWrap.height()); time = (fullS - (strWrap.height() - parseFloat(strMove.css('top')))) / strWrap.data('scrollamount') * 1000; } return time; }; var moveFunc = function () { if (loop != 0) { strMove.animate({ top: topPos }, timeFunc(), 'linear', function () { $(this).css({ top: strWrap.height() }); if (loop == -1) { setTimeout(moveFunc, p.scrolldelay); } else { loop--; setTimeout(moveFunc, p.scrolldelay); }; }); }; }; strWrap.data({ moveF : moveFunc }) if(!p.inverthover){ moveFunc(); } if (p.hoverstop) { strWrap.on(enterEvent, function () { $(this).addClass('str_active'); strMove.stop(true); }).on(leaveEvent, function () { $(this).removeClass('str_active'); $(this).off('mousemove'); moveFunc(); }); if (p.drag) { strWrap.on('mousedown', function (e) { if(p.inverthover){ strMove.stop(true); } //drag var dragTop; var dir = 1; var newY; var oldY = e.clientY; //drag strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); $(this).on('mousemove', function (e) { fMove = true; //drag newY = e.clientY; if(newY > oldY){ dir = 1 }else{ if(newY < oldY){ dir = -1 } } oldY = newY dragTop = k2 + e.clientY - strWrap.offset().top; if (!p.circular){ if(dragTop < -strMove.height() && dir < 0){ dragTop = strWrap.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } if(dragTop > strWrap.height() && dir > 0){ dragTop = -strMove.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } }else{ if(dragTop < -strMove.height() && dir < 0){ dragTop = 0; strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } if(dragTop > 0 && dir > 0){ dragTop = -strMove.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } } strMove.stop(true).css({ top: dragTop }); //drag }).on('mouseup', function () { if(p.inverthover){ strMove.trigger('mouseenter') } $(this).off('mousemove'); setTimeout(function () { fMove = false }, 50) }); return false; }) .on('click', function () { if (fMove) { return false } }); } else { strWrap.addClass('no_drag'); }; } } else { if (p.runshort) { strMove.css({ top: strWrap.height() }); var k2 = 0; var timeFunc = function () { time = (strMove.height() + strMove.position().top) / strWrap.data('scrollamount') * 1000; return time; }; var moveFunc = function () { var topPos = -strMove.height(); strMove.animate({ top: topPos }, timeFunc(), 'linear', function () { $(this).css({ top: strWrap.height() }); if (loop == -1) { setTimeout(moveFunc, p.scrolldelay); } else { loop--; setTimeout(moveFunc, p.scrolldelay); }; }); }; strWrap.data({ moveF : moveFunc }) if(!p.inverthover){ moveFunc(); } if (p.hoverstop) { strWrap.on(enterEvent, function () { $(this).addClass('str_active'); strMove.stop(true); }).on(leaveEvent, function () { $(this).removeClass('str_active'); $(this).off('mousemove'); moveFunc(); }); if (p.drag) { strWrap.on('mousedown', function (e) { if(p.inverthover){ strMove.stop(true); } //drag var dragTop; var dir = 1; var newY; var oldY = e.clientY; //drag strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); $(this).on('mousemove', function (e) { fMove = true; //drag newY = e.clientY; if(newY > oldY){ dir = 1 }else{ if(newY < oldY){ dir = -1 } } oldY = newY dragTop = k2 + e.clientY - strWrap.offset().top; if(dragTop < -strMove.height() && dir < 0){ dragTop = strWrap.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } if(dragTop > strWrap.height() && dir > 0){ dragTop = -strMove.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } //*drag strMove.stop(true).css({ top: dragTop }); }).on('mouseup', function () { if(p.inverthover){ strMove.trigger('mouseenter') } $(this).off('mousemove'); setTimeout(function () { fMove = false }, 50) }); return false; }) .on('click', function () { if (fMove) { return false } }); } else { strWrap.addClass('no_drag'); }; } } else { strWrap.addClass('str_static'); } }; }; if (p.direction == 'down') { strWrap.addClass('str_vertical').addClass('str_down'); strMove.css({ top: -strMove.height(), bottom: 'auto' }) if (strMove.height() > strWrap.height()) { var topPos = strWrap.height(); if (p.circular) { if (!p.xml) { circCloneVert(); topPos = strMove.height(); } } if (p.xml) { strMove.css({ top:-strMove.height() }) } var k2 = 0; timeFunc = function () { var fullS = strWrap.height(), //泻褉邪泄薪褟褟 褌芯褔泻邪 time = (fullS / strWrap.data('scrollamount')) * 1000; //胁褉械屑褟 if (parseFloat(strMove.css('top')) != 0) { fullS = (strMove.height() + strWrap.height()); time = (fullS - (strMove.height() + parseFloat(strMove.css('top')))) / strWrap.data('scrollamount') * 1000; } return time; }; var moveFunc = function () { if (loop != 0) { strMove.animate({ top: topPos }, timeFunc(), 'linear', function () { $(this).css({ top: -strMove.height() }); if (loop == -1) { setTimeout(moveFunc, p.scrolldelay); } else { loop--; setTimeout(moveFunc, p.scrolldelay); }; }); }; }; strWrap.data({ moveF : moveFunc }) if(!p.inverthover){ moveFunc(); } if (p.hoverstop) { strWrap.on(enterEvent, function () { $(this).addClass('str_active'); strMove.stop(true); }).on(leaveEvent, function () { $(this).removeClass('str_active'); $(this).off('mousemove'); moveFunc(); }); if (p.drag) { strWrap.on('mousedown', function (e) { if(p.inverthover){ strMove.stop(true); } //drag var dragTop; var dir = 1; var newY; var oldY = e.clientY; //drag strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); $(this).on('mousemove', function (e) { fMove = true; //drag newY = e.clientY; if(newY > oldY){ dir = 1 }else{ if(newY < oldY){ dir = -1 } } oldY = newY dragTop = k2 + e.clientY - strWrap.offset().top; if (!p.circular){ if(dragTop < -strMove.height() && dir < 0){ dragTop = strWrap.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } if(dragTop > strWrap.height() && dir > 0){ dragTop = -strMove.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } }else{ if(dragTop < -strMove.height() && dir < 0){ dragTop = 0; strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } if(dragTop > 0 && dir > 0){ dragTop = -strMove.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } } strMove.stop(true).css({ top: dragTop }); //drag }).on('mouseup', function () { if(p.inverthover){ strMove.trigger('mouseenter') } $(this).off('mousemove'); setTimeout(function () { fMove = false }, 50) }); return false; }) .on('click', function () { if (fMove) { return false } }); } else { strWrap.addClass('no_drag'); }; } } else { if (p.runshort) { var k2 = 0; var timeFunc = function () { time = (strWrap.height() - strMove.position().top) / strWrap.data('scrollamount') * 1000; return time; }; var moveFunc = function () { var topPos = strWrap.height(); strMove.animate({ top: topPos }, timeFunc(), 'linear', function () { $(this).css({ top: -strMove.height() }); if (loop == -1) { setTimeout(moveFunc, p.scrolldelay); } else { loop--; setTimeout(moveFunc, p.scrolldelay); }; }); }; strWrap.data({ moveF : moveFunc }) if(!p.inverthover){ moveFunc(); } if (p.hoverstop) { strWrap.on(enterEvent, function () { $(this).addClass('str_active'); strMove.stop(true); }).on(leaveEvent, function () { $(this).removeClass('str_active'); $(this).off('mousemove'); moveFunc(); }); if (p.drag) { strWrap.on('mousedown', function (e) { if(p.inverthover){ strMove.stop(true); } //drag var dragTop; var dir = 1; var newY; var oldY = e.clientY; //drag strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); $(this).on('mousemove', function (e) { fMove = true; //drag newY = e.clientY; if(newY > oldY){ dir = 1 }else{ if(newY < oldY){ dir = -1 } } oldY = newY dragTop = k2 + e.clientY - strWrap.offset().top; if(dragTop < -strMove.height() && dir < 0){ dragTop = strWrap.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } if(dragTop > strWrap.height() && dir > 0){ dragTop = -strMove.height(); strMoveTop = strMove.position().top; k2 = strMoveTop - (e.clientY - strWrap.offset().top); } //*drag strMove.stop(true).css({ top: dragTop }); }).on('mouseup', function () { if(p.inverthover){ strMove.trigger('mouseenter') } $(this).off('mousemove'); setTimeout(function () { fMove = false }, 50) }) return false; }) .on('click', function () { if (fMove) { return false } }); } else { strWrap.addClass('no_drag'); }; } } else { strWrap.addClass('str_static'); } }; }; } if (p.xml) { $.ajax({ url: p.xml, dataType: "xml", success: function (xml) { var xmlTextEl = $(xml).find('text'); var xmlTextLength = xmlTextEl.length; for(var i = 0; i < xmlTextLength; i++){ var xmlElActive = xmlTextEl.eq(i); var xmlElContent = xmlElActive.text(); var xmlItemEl = $('').text(xmlElContent).appendTo(strWrap); if(p.direction == 'left' || p.direction == 'right'){ xmlItemEl.css({display:'inline-block',textAlign:'right'}); if(i > 0){ xmlItemEl.css({width:strWrap.width()+xmlItemEl.width()}); } } if(p.direction == 'down' || p.direction == 'up'){ xmlItemEl.css({display:'block',textAlign:'left'}); if(i > 0){ xmlItemEl.css({paddingTop:strWrap.height()}); } } } code(); } }); } else { code(); } strWrap.data({ ini:code, startheight: startHeight }) }); }, update: function () { var el = $(this); var str_origin = $('.str_origin',el); var str_move_clone = $('.str_move_clone',el); str_origin.stop(true); str_move_clone.remove(); el.data('ini')(); }, destroy: function () { var el = $(this); var elMove = $('.str_move',el); var startHeight = el.data('startheight'); $('.str_move_clone',el).remove(); el.off('mouseenter'); el.off('mousedown'); el.off('mouseup'); el.off('mouseleave'); el.off('mousemove'); el.removeClass('noStop').removeClass('str_vertical').removeClass('str_active').removeClass('no_drag').removeClass('str_static').removeClass('str_right').removeClass('str_down'); var elStyle = el.attr('style'); if(elStyle){ var styleArr = elStyle.split(';'); for(var i=0; i < styleArr.length; i++){ var str = $.trim(styleArr[i]); var tested = str.search(/^height/g); if(tested != -1){ styleArr[i] = ''; } } var newArr = styleArr.join(';'); var newStyle = newArr.replace(/;+/g,';') if(newStyle == ';'){ el.removeAttr('style'); }else{ el.attr('style',newStyle); } if(startHeight){ el.css({height:startHeight}) } } elMove.stop(true); if(elMove.length){ var context = elMove.html(); elMove.remove(); el.html(context); } }, pause: function(){ var el = $(this); var elMove = $('.str_move',el); elMove.stop(true); }, play: function(){ var el = $(this); $(this).off('mousemove'); el.data('moveF')(); } }; $.fn.liMarquee = function (method) { if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || !method) { return methods.init.apply(this, arguments); } else { $.error('袦械褌芯写 ' + method + ' 胁 jQuery.liMarquee 薪械 褋褍褖械褋褌胁褍械褌'); } }; })(jQuery);