Well, the first part to just about anything is knowing what you're programming. I know it sounds obvious; but now we break it all down.

Let's kick the dissection off with the jumping. First off, we need to get regular jumping working. In order to do that, we need to think of the basic parts that make up a jump. Let's focus on the steps of a jump in real life..
----------------------------------
1: Player bends knees, ready to jump

2: Player springs up from floor, straightening his legs again

3: Player moves upwards, and whilst in the air cannot jump again.

4: Player reaches maximum jump height and stops going upwards

5: Gravity pulls Player back down

6: Player hits ground and can jump again.

Now let's take a look at these steps..

Step one --

Step one is the preparation step, it is the step in which Player prepares to jump. He bends his legs over a certain period of time, an animation. When his legs are bent as far as they need bending (The jump preparation animation is complete), Player can jump.

Steps two and three--

Step two is simply the animation of jumping. At the same time, step three happens which actually moves Player upward, over a certain period of time. That period of time determines how far upward he can go, as after that time period expires, Player will not be able to ascend any more.

Step four--

Eventually Player will have gone as high as the time period of the jump allows, and he will have reached his maximum height. This is where step four comes in, it detects that Player has been going up for as long as he is allowed to and must stop Player from going up any more. When Player has been stopped, step four ends and step five begins.

Step five--

This is basically just gravity (a variable) constantly pulling Player down (acccording to it's value). It doesn't stop Player from rising during the jump, as the player moves upwards more quants per frame than the gravity pulls down which results in upward movement. Player is STILL in midair though, and until he hits the ground he will still not be able to jump. Step six comes in here.

Step six--

Player is touching the ground, and is able to jump again.