Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3212186
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T14:48:44+00:00 2026-05-17T14:48:44+00:00

This is about the (mootools-like) kwicks Jquery plugin: http://www.jeremymartin.name/projects.php?project=kwicks I have the same problem

  • 0

This is about the (mootools-like) kwicks Jquery plugin: http://www.jeremymartin.name/projects.php?project=kwicks

I have the same problem as this guy here jquery kwicks issue (kwicks for jquery works fine on test site but not on live site) but in my case I know what the problem is, I only can’t find an answer yet, and the Kwicks plugin is no longer under active development.

I believe the problem is with the Jquery version. This plugin works great with 1.2.6 but on 1.4.2 it just wont work. I have tried to check the code for the plugin but I don’t know how to upgrade it to be 1.4.2 Jquery compatible.

I have never used 1.2.6 so I don’t know what I need to change to make this work for 1.4.2.

Please help. Thank you!

P.S> Please find below the source code for the plugin (Jquery 1.2.6 compatible).

(function($){
$.fn.kwicks = function(options) {
    var defaults = {
        isVertical: false,
        sticky: false,
        defaultKwick: 0,
        event: 'mouseover',
        spacing: 0,
        duration: 500
    };
    var o = $.extend(defaults, options);
    var WoH = (o.isVertical ? 'height' : 'width'); // WoH = Width or Height
    var LoT = (o.isVertical ? 'top' : 'left'); // LoT = Left or Top

    return this.each(function() {
        container = $(this);
        var kwicks = container.children('li');
        var normWoH = kwicks.eq(0).css(WoH).replace(/px/,''); // normWoH = Normal Width or Height
        if(!o.max) {
            o.max = (normWoH * kwicks.size()) - (o.min * (kwicks.size() - 1));
        } else {
            o.min = ((normWoH * kwicks.size()) - o.max) / (kwicks.size() - 1);
        }
        // set width of container ul
        if(o.isVertical) {
            container.css({
                width : kwicks.eq(0).css('width'),
                height : (normWoH * kwicks.size()) + (o.spacing * (kwicks.size() - 1)) + 'px'
            });                
        } else {
            container.css({
                width : (normWoH * kwicks.size()) + (o.spacing * (kwicks.size() - 1)) + 'px',
                height : kwicks.eq(0).css('height')
            });                
        }

        // pre calculate left or top values for all kwicks but the first and last
        // i = index of currently hovered kwick, j = index of kwick we're calculating
        var preCalcLoTs = []; // preCalcLoTs = pre-calculated Left or Top's
        for(i = 0; i < kwicks.size(); i++) {
            preCalcLoTs[i] = [];
            // don't need to calculate values for first or last kwick
            for(j = 1; j < kwicks.size() - 1; j++) {
                if(i == j) {
                    preCalcLoTs[i][j] = o.isVertical ? j * o.min + (j * o.spacing) : j * o.min + (j * o.spacing);
                } else {
                    preCalcLoTs[i][j] = (j <= i ? (j * o.min) : (j-1) * o.min + o.max) + (j * o.spacing);
                }
            }
        }

        // loop through all kwick elements
        kwicks.each(function(i) {
            var kwick = $(this);
            // set initial width or height and left or top values
            // set first kwick
            if(i === 0) {
                kwick.css(LoT, '0px');
            } 
            // set last kwick
            else if(i == kwicks.size() - 1) {
                kwick.css(o.isVertical ? 'bottom' : 'right', '0px');
            }
            // set all other kwicks
            else {
                if(o.sticky) {
                    kwick.css(LoT, preCalcLoTs[o.defaultKwick][i]);
                } else {
                    kwick.css(LoT, (i * normWoH) + (i * o.spacing));
                }
            }
            // correct size in sticky mode
            if(o.sticky) {
                if(o.defaultKwick == i) {
                    kwick.css(WoH, o.max + 'px');
                    kwick.addClass('active');
                } else {
                    kwick.css(WoH, o.min + 'px');
                }
            }
            kwick.css({
                margin: 0,
                position: 'absolute'
            });

            kwick.bind(o.event, function() {
                // calculate previous width or heights and left or top values
                var prevWoHs = []; // prevWoHs = previous Widths or Heights
                var prevLoTs = []; // prevLoTs = previous Left or Tops
                kwicks.stop().removeClass('active');
                for(j = 0; j < kwicks.size(); j++) {
                    prevWoHs[j] = kwicks.eq(j).css(WoH).replace(/px/, '');
                    prevLoTs[j] = kwicks.eq(j).css(LoT).replace(/px/, '');
                }
                var aniObj = {};
                aniObj[WoH] = o.max;
                var maxDif = o.max - prevWoHs[i];
                var prevWoHsMaxDifRatio = prevWoHs[i]/maxDif;
                kwick.addClass('active').animate(aniObj, {
                    step: function(now) {
                        // calculate animation completeness as percentage
                        var percentage = maxDif != 0 ? now/maxDif - prevWoHsMaxDifRatio : 1;
                        // adjsut other elements based on percentage
                        kwicks.each(function(j) {
                            if(j != i) {
                                kwicks.eq(j).css(WoH, prevWoHs[j] - ((prevWoHs[j] - o.min) * percentage) + 'px');
                            }
                            if(j > 0 && j < kwicks.size() - 1) { // if not the first or last kwick
                                kwicks.eq(j).css(LoT, prevLoTs[j] - ((prevLoTs[j] - preCalcLoTs[i][j]) * percentage) + 'px');
                            }
                        });
                    },
                    duration: o.duration,
                    easing: o.easing
                });
            });
        });
        if(!o.sticky) {
            container.bind("mouseleave", function() {
                var prevWoHs = [];
                var prevLoTs = [];
                kwicks.removeClass('active').stop();
                for(i = 0; i < kwicks.size(); i++) {
                    prevWoHs[i] = kwicks.eq(i).css(WoH).replace(/px/, '');
                    prevLoTs[i] = kwicks.eq(i).css(LoT).replace(/px/, '');
                }
                var aniObj = {};
                aniObj[WoH] = normWoH;
                var normDif = normWoH - prevWoHs[0];
                kwicks.eq(0).animate(aniObj, {
                    step: function(now) {
                        var percentage = normDif != 0 ? (now - prevWoHs[0])/normDif : 1;
                        for(i = 1; i < kwicks.size(); i++) {
                            kwicks.eq(i).css(WoH, prevWoHs[i] - ((prevWoHs[i] - normWoH) * percentage) + 'px');
                            if(i < kwicks.size() - 1) {
                                kwicks.eq(i).css(LoT, prevLoTs[i] - ((prevLoTs[i] - ((i * normWoH) + (i * o.spacing))) * percentage) + 'px');
                            }
                        }
                    },
                    duration: o.duration,
                    easing: o.easing
                });
            });
        }
    });
};})(jQuery);
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T14:48:44+00:00Added an answer on May 17, 2026 at 2:48 pm

    Thanks to Nick Craver and http://jsfiddle.net/ (see comment on original post), I found the problem! The packed and minimized version I downloaded from the project site seems to have a problem cos now I’m using the unpacked version and it works perfectly.

    Download the unpacked version (or just copy the code as I have pasted in the OP above) and you should be good to go. Then pack it yourself if you want 😉
    http://kwicks.googlecode.com/svn/branches/v1.5.1/Kwicks/jquery.kwicks-1.5.1.js

    StackOverflow rocks!

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have read this post about how to test private methods. I usually do
I'm talking about this: If we have the letter 'A' which is 77 in
This is about when a .NET remoting exception is thrown. If you take a
This is about a school assignment so I'm trying to do things by the
I know about this question: Which (third-party) debug visualizers for Visual Studio 2005/2008 do
While thinking about this question and conversing with the participants, the idea came up
I was reading this question about how to parse URLs out of web pages
I was reading this article about Double-Checked locking and out of the main topic
Jeff Atwood wrote about this here , and while I understand the theoretical performance
LearnWPF.com posted this article about converting bitmap images to XAML and using them in

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.