Error de extensión de Chrome "$ no está definido"

Recibo un error "$ no está definido" cuando estoy trabajando en mi extensión de Chrome.

Este es mi archivo de manifiesto:

   {
      "name": "X",
      "description": "Snip this page",
      "version": "2.0",
      "permissions": [
        "activeTab"
      ],
      "background": {
        "scripts": ["background.js"],
        "persistent": false
      },
      "content_scripts":[{
        "matches" : ["<all_urls>"],
        "js": ["jquery-2.0.2.js","jquery.Jcrop.js"],
        "css": ["jquery.Jcrop.min.css"]
      }],
      "browser_action": {
        "default_title": "Snip this page"
      },
      "manifest_version": 2
    }

Este es mi archivo background.js:

chrome.browserAction.onClicked.addListener(function(tab){
  // No tabs or host permissions needed!
  chrome.tabs.executeScript({
    file: 'content.js'
  });
});

Por último, el archivo donde se desencadena el error: content.js

console.log('1');
var jcropapi, boundx, boundy;
$('body').attr('id', 'target');
$(document).ready(function(){
    $('target').Jcrop();
    console.log('4');
    document.onkeydown = function(){
        if(window.event.keyCode==13){
            console.log('enter');
        }
    };
});

Según tengo entendido, esto sucede porque JQuery no se carga. Sin embargo, lo estoy cargando correctamente en el manifiesto, y jquery.js también es el primer archivo al que se llama en el script de contenido del manifiesto. Por favor ayudame en la depuración. ¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta