<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://kamelopedia.net/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AJQuery.Marquee.js</id>
	<title>MediaWiki:JQuery.Marquee.js - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://kamelopedia.net/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AJQuery.Marquee.js"/>
	<link rel="alternate" type="text/html" href="http://kamelopedia.net/index.php?title=MediaWiki:JQuery.Marquee.js&amp;action=history"/>
	<updated>2026-11-01T19:06:38Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Kamelopedia</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://kamelopedia.net/index.php?title=MediaWiki:JQuery.Marquee.js&amp;diff=523903&amp;oldid=prev</id>
		<title>J*: AZ: Die Seite wurde neu angelegt.</title>
		<link rel="alternate" type="text/html" href="http://kamelopedia.net/index.php?title=MediaWiki:JQuery.Marquee.js&amp;diff=523903&amp;oldid=prev"/>
		<updated>2013-10-12T09:44:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/KP:AZ&quot; class=&quot;mw-redirect&quot; title=&quot;KP:AZ&quot;&gt;AZ&lt;/a&gt;: Die Seite wurde neu angelegt.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
* author Remy Sharp&lt;br /&gt;
* url http://remysharp.com/tag/marquee&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
(function ($) {&lt;br /&gt;
    $.fn.marquee = function (klass) {&lt;br /&gt;
        var newMarquee = [],&lt;br /&gt;
            last = this.length;&lt;br /&gt;
&lt;br /&gt;
        // works out the left or right hand reset position, based on scroll&lt;br /&gt;
        // behavior, current direction and new direction&lt;br /&gt;
        function getReset(newDir, marqueeRedux, marqueeState) {&lt;br /&gt;
            var behavior = marqueeState.behavior, width = marqueeState.width, dir = marqueeState.dir;&lt;br /&gt;
            var r = 0;&lt;br /&gt;
            if (behavior == &amp;#039;alternate&amp;#039;) {&lt;br /&gt;
                r = newDir == 1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : width;&lt;br /&gt;
            } else if (behavior == &amp;#039;slide&amp;#039;) {&lt;br /&gt;
                if (newDir == -1) {&lt;br /&gt;
                    r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] : width;&lt;br /&gt;
                } else {&lt;br /&gt;
                    r = dir == -1 ? marqueeRedux[marqueeState.widthAxis] - (width*2) : 0;&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                r = newDir == -1 ? marqueeRedux[marqueeState.widthAxis] : 0;&lt;br /&gt;
            }&lt;br /&gt;
            return r;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // single &amp;quot;thread&amp;quot; animation&lt;br /&gt;
        function animateMarquee() {&lt;br /&gt;
            var i = newMarquee.length,&lt;br /&gt;
                marqueeRedux = null,&lt;br /&gt;
                $marqueeRedux = null,&lt;br /&gt;
                marqueeState = {},&lt;br /&gt;
                newMarqueeList = [],&lt;br /&gt;
                hitedge = false;&lt;br /&gt;
                &lt;br /&gt;
            while (i--) {&lt;br /&gt;
                marqueeRedux = newMarquee[i];&lt;br /&gt;
                $marqueeRedux = $(marqueeRedux);&lt;br /&gt;
                marqueeState = $marqueeRedux.data(&amp;#039;marqueeState&amp;#039;);&lt;br /&gt;
                &lt;br /&gt;
                if ($marqueeRedux.data(&amp;#039;paused&amp;#039;) !== true) {&lt;br /&gt;
                    // TODO read scrollamount, dir, behavior, loops and last from data&lt;br /&gt;
                    marqueeRedux[marqueeState.axis] += (marqueeState.scrollamount * marqueeState.dir);&lt;br /&gt;
&lt;br /&gt;
                    // only true if it&amp;#039;s hit the end&lt;br /&gt;
                    hitedge = marqueeState.dir == -1 ? marqueeRedux[marqueeState.axis] &amp;lt;= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState) : marqueeRedux[marqueeState.axis] &amp;gt;= getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);&lt;br /&gt;
                    &lt;br /&gt;
                    if ((marqueeState.behavior == &amp;#039;scroll&amp;#039; &amp;amp;&amp;amp; marqueeState.last == marqueeRedux[marqueeState.axis]) || (marqueeState.behavior == &amp;#039;alternate&amp;#039; &amp;amp;&amp;amp; hitedge &amp;amp;&amp;amp; marqueeState.last != -1) || (marqueeState.behavior == &amp;#039;slide&amp;#039; &amp;amp;&amp;amp; hitedge &amp;amp;&amp;amp; marqueeState.last != -1)) {                        &lt;br /&gt;
                        if (marqueeState.behavior == &amp;#039;alternate&amp;#039;) {&lt;br /&gt;
                            marqueeState.dir *= -1; // flip&lt;br /&gt;
                        }&lt;br /&gt;
                        marqueeState.last = -1;&lt;br /&gt;
&lt;br /&gt;
                        $marqueeRedux.trigger(&amp;#039;stop&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
                        marqueeState.loops--;&lt;br /&gt;
                        if (marqueeState.loops === 0) {&lt;br /&gt;
                            if (marqueeState.behavior != &amp;#039;slide&amp;#039;) {&lt;br /&gt;
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);&lt;br /&gt;
                            } else {&lt;br /&gt;
                                // corrects the position&lt;br /&gt;
                                marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir * -1, marqueeRedux, marqueeState);&lt;br /&gt;
                            }&lt;br /&gt;
&lt;br /&gt;
                            $marqueeRedux.trigger(&amp;#039;end&amp;#039;);&lt;br /&gt;
                        } else {&lt;br /&gt;
                            // keep this marquee going&lt;br /&gt;
                            newMarqueeList.push(marqueeRedux);&lt;br /&gt;
                            $marqueeRedux.trigger(&amp;#039;start&amp;#039;);&lt;br /&gt;
                            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);&lt;br /&gt;
                        }&lt;br /&gt;
                    } else {&lt;br /&gt;
                        newMarqueeList.push(marqueeRedux);&lt;br /&gt;
                    }&lt;br /&gt;
                    marqueeState.last = marqueeRedux[marqueeState.axis];&lt;br /&gt;
&lt;br /&gt;
                    // store updated state only if we ran an animation&lt;br /&gt;
                    $marqueeRedux.data(&amp;#039;marqueeState&amp;#039;, marqueeState);&lt;br /&gt;
                } else {&lt;br /&gt;
                    // even though it&amp;#039;s paused, keep it in the list&lt;br /&gt;
                    newMarqueeList.push(marqueeRedux);                    &lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            newMarquee = newMarqueeList;&lt;br /&gt;
            &lt;br /&gt;
            if (newMarquee.length) {&lt;br /&gt;
                setTimeout(animateMarquee, 25);&lt;br /&gt;
            }            &lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // TODO consider whether using .html() in the wrapping process could lead to loosing predefined events...&lt;br /&gt;
        this.each(function (i) {&lt;br /&gt;
            var $marquee = $(this),&lt;br /&gt;
                width = $marquee.attr(&amp;#039;width&amp;#039;) || $marquee.width(),&lt;br /&gt;
                height = $marquee.attr(&amp;#039;height&amp;#039;) || $marquee.height(),&lt;br /&gt;
                $marqueeRedux = $marquee.after(&amp;#039;&amp;lt;div &amp;#039; + (klass ? &amp;#039;class=&amp;quot;&amp;#039; + klass + &amp;#039;&amp;quot; &amp;#039; : &amp;#039;&amp;#039;) + &amp;#039;style=&amp;quot;display: block-inline; width: &amp;#039; + width + &amp;#039;px; height: &amp;#039; + height + &amp;#039;px; overflow: hidden;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;float: left; white-space: nowrap;&amp;quot;&amp;gt;&amp;#039; + $marquee.html() + &amp;#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;).next(),&lt;br /&gt;
                marqueeRedux = $marqueeRedux.get(0),&lt;br /&gt;
                hitedge = 0,&lt;br /&gt;
                direction = ($marquee.attr(&amp;#039;direction&amp;#039;) || &amp;#039;left&amp;#039;).toLowerCase(),&lt;br /&gt;
                marqueeState = {&lt;br /&gt;
                    dir : /down|right/.test(direction) ? -1 : 1,&lt;br /&gt;
                    axis : /left|right/.test(direction) ? &amp;#039;scrollLeft&amp;#039; : &amp;#039;scrollTop&amp;#039;,&lt;br /&gt;
                    widthAxis : /left|right/.test(direction) ? &amp;#039;scrollWidth&amp;#039; : &amp;#039;scrollHeight&amp;#039;,&lt;br /&gt;
                    last : -1,&lt;br /&gt;
                    loops : $marquee.attr(&amp;#039;loop&amp;#039;) || -1,&lt;br /&gt;
                    scrollamount : $marquee.attr(&amp;#039;scrollamount&amp;#039;) || this.scrollAmount || 2,&lt;br /&gt;
                    behavior : ($marquee.attr(&amp;#039;behavior&amp;#039;) || &amp;#039;scroll&amp;#039;).toLowerCase(),&lt;br /&gt;
                    width : /left|right/.test(direction) ? width : height&lt;br /&gt;
                };&lt;br /&gt;
            &lt;br /&gt;
            // corrects a bug in Firefox - the default loops for slide is -1&lt;br /&gt;
            if ($marquee.attr(&amp;#039;loop&amp;#039;) == -1 &amp;amp;&amp;amp; marqueeState.behavior == &amp;#039;slide&amp;#039;) {&lt;br /&gt;
                marqueeState.loops = 1;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $marquee.remove();&lt;br /&gt;
            &lt;br /&gt;
            // add padding&lt;br /&gt;
            if (/left|right/.test(direction)) {&lt;br /&gt;
                $marqueeRedux.find(&amp;#039;&amp;gt; div&amp;#039;).css(&amp;#039;padding&amp;#039;, &amp;#039;0 &amp;#039; + width + &amp;#039;px&amp;#039;);&lt;br /&gt;
            } else {&lt;br /&gt;
                $marqueeRedux.find(&amp;#039;&amp;gt; div&amp;#039;).css(&amp;#039;padding&amp;#039;, height + &amp;#039;px 0&amp;#039;);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // events&lt;br /&gt;
            $marqueeRedux.bind(&amp;#039;stop&amp;#039;, function () {&lt;br /&gt;
                $marqueeRedux.data(&amp;#039;paused&amp;#039;, true);&lt;br /&gt;
            }).bind(&amp;#039;pause&amp;#039;, function () {&lt;br /&gt;
                $marqueeRedux.data(&amp;#039;paused&amp;#039;, true);&lt;br /&gt;
            }).bind(&amp;#039;start&amp;#039;, function () {&lt;br /&gt;
                $marqueeRedux.data(&amp;#039;paused&amp;#039;, false);&lt;br /&gt;
            }).bind(&amp;#039;unpause&amp;#039;, function () {&lt;br /&gt;
                $marqueeRedux.data(&amp;#039;paused&amp;#039;, false);&lt;br /&gt;
            }).data(&amp;#039;marqueeState&amp;#039;, marqueeState); // finally: store the state&lt;br /&gt;
            &lt;br /&gt;
            // todo - rerender event allowing us to do an ajax hit and redraw the marquee&lt;br /&gt;
&lt;br /&gt;
            newMarquee.push(marqueeRedux);&lt;br /&gt;
&lt;br /&gt;
            marqueeRedux[marqueeState.axis] = getReset(marqueeState.dir, marqueeRedux, marqueeState);&lt;br /&gt;
            $marqueeRedux.trigger(&amp;#039;start&amp;#039;);&lt;br /&gt;
            &lt;br /&gt;
            // on the very last marquee, trigger the animation&lt;br /&gt;
            if (i+1 == last) {&lt;br /&gt;
                animateMarquee();&lt;br /&gt;
            }&lt;br /&gt;
        });            &lt;br /&gt;
&lt;br /&gt;
        return $(newMarquee);&lt;br /&gt;
    };&lt;br /&gt;
}(jQuery));&lt;/div&gt;</summary>
		<author><name>J*</name></author>
	</entry>
</feed>