Born in Macclesfield, Evans started his career with Manchester United as part of the youth setup. Despite being touted as a future star by Alex Ferguson he decided to re-join Crewe Alexandra under Dario Gradi due to their excellent record for mentoring youth players. He had previously been with Crewe from the age of seven before joining Manchester United where he stayed until 14 years of age. Due to the relegation of Crewe in 2005–06 season and the judgement of the new Manager, Steve Holland, Evans was released by the club.
Macclesfield Town
After leaving Crewe, Evans played in the PFAexit trials and joined Port Vale under Martin Foyle. He scored and impressed in pre-season for them and went on the pre-season tour, but as Foyle had already signed several players that summer, no budget was available for younger inexperienced players. As a result, however, he was recommended to Ian Brightwell at Macclesfield Town so that he could gain experience of league football. Evans signed for the League Two side during the 2007–08 season. He was given the number 26 jersey. Still just 20, he became a first team regular scoring twelve goals and with a number of assists including a goal at West Ham in the Carling Cup. His energy and work rate made him a big hit with the Macclesfield fans.
On 1 July 2009, Bradford signed Evans from Macclesfield for an undisclosed fee believed to be £30,000. He made his debut on the opening day of the season, coming on as a second-half substitute against eventual league winners Notts County. He scored his first Bradford goal in a 5–4 away win to Cheltenham. In November during a 1–1 home draw against Accrington, Evans missed a last minute penalty, that hit a fan in the lower tier of the stand behind the goal, knocking them to the ground. He finished his first season with the Bantams with 11 goals, including two braces in wins against Torquay and Northampton. The first goal in the match against Northampton was nominated for Mitre Goal of the Year and finished in the top 10. His finished his second season with three goals, coming in wins against Stevenage, Stockport and Lincoln. He was released by Bradford at the end of the season, and signed for Yorkshire neighbours and League Two rivals Rotherham United on 3 June 2011.
Rotherham United
He scored two goals on his debut for the Millers against Plymouth, as Rotherham won 4–1. He scored again in two home wins against Gillingham and Dagenham, and then in successive away draws against Morecambe and Northampton. He returned to face former club Bradford for the first time in November, however he was injured after just 12 minutes and had to be substituted. On 28 April 2012, he scored a penalty in a 2–2 draw against Aldershot Town. His first two goals of the following season came against former club Bradford on 1 September 2012.
On 28 July 2015, Evans completed a move to League Two side Portsmouth on a one-year deal. In his first season, Evans was a regular choice as the right-winger in Paul Cook's preferred 4-2-3-1 formation; playing as a more traditional wide-player than Kyle Bennett on the opposite flank, hugging the touchline, getting crosses into the box and seeking to provide a goalscoring threat. Evans managed to scored 10 League goals as he racked up 48 appearances in all competitions. Despite a summer overhaul by the manager, during which Carl Baker was brought in to challenge for Evans' spot, and the resurgence of Kal Naismith, Evans remained a key member of the Portsmouth squad in the 2016/17 promotion campaign. Though the midfielder missed pre-season with an injury sustained in the previous campaign's playoff semi-final, upon his return Evans quickly established himself in the first-team in a new position: at right-back. Evans successfully kept natural right-back and summer signing Drew Talbot on the bench throughout the season, as Portsmouth claimed promotion via the League Two Championship, making more than 40 appearances across all competitions and establishing himself as the team's first-choice penalty taker. On 18 May 2017 Evans signed a new 2-year contract at Portsmouth, keeping him at the club until 2019. During the 2018–2019 season, Evans primarily has started as a midfielder under manager Kenny Jackett, playing behind wingers Jamal Lowe and Ronan Curtis. In the 2017-18 league one season, Evans played vice-captain role to Brett Pitman. In the 2018–19 season, with the inconsistent form of Pitman, Evans has become the squads' first-choice captain.