Gordon was born and raised in Nova Scotia, where he also played his minor hockey. He was a member of the Dartmouth Subways Midget 'AAA' team that won the silver medal at the 2002 Air Canada Cup, Canada's national midget championship. The next season, Gordon joined the Notre Dame Hounds of the Saskatchewan Junior Hockey League. In 2004, he was drafted by the Washington Capitals (7th round, 197th overall). However, instead of immediately joining the Capitals, he played for three years with the St. Cloud State Huskies in the Western Collegiate Hockey Association.
Gordon spent his first professional season (2007–08) with the American Hockey League's Hershey Bears and the ECHL's South Carolina Stingrays, though he spent most of the year with Hershey. The next year, he scored twenty goals with Hershey and helped them win the Calder Cup. He also made his NHL debut with the Capitals, playing in one game for them. In 2009-10, he had an even better year, scoring thirty-seven goals, and the Bears won the Calder Cup for the second year in a row. He also played in two games for the Capitals.
In the 2010-11 season Gordon made it to final cuts of the Capitals training camp but was reassigned to Hershey along with Jay Beagle and Mathieu Perreault. Gordon played in Hershey until mid-December when he was called up for a game against the New York Rangers.
On 21 December 2010, Gordon scored his first NHL goal for the Capitals against Martin Brodeur of the New Jersey Devils. After scoring, Gordon kissed his linemate Marcus Johansson on the cheek as they sat on the bench.
He was later sent back down to Hershey and played until being recalled once again in January when Capitals winger Eric Fehr got hurt.
On July 2, 2011, he was signed by the Ducks to a two-year deal. During the 2011–12 season Gordon was traded to the Vancouver Canucks for defenceman Sebastian Erixon. He made his Canucks debut on March 21, 2013 in a game in Phoenix.
After becoming an unrestricted free agent at season's end, Gordon signed a one-year contract with the Winnipeg Jets on July 6, 2013. He was assigned to AHL affiliate, the St. John's IceCaps for the entirety of the 2013–14 season, helping the club reach the Calder Cup finals for the first time in franchise history.
On July 2, 2014, he was signed as a free agent to a one-year, two-way contract with the Philadelphia Flyers.
On June 3, 2015, Gordon signed with Linköpings HC of the Swedish Hockey League.