jQuery

Sempre prefira usar jQuery ao invés de JavaScript Puro !

Usar javascript puto requer um alto conhecimento da linguagem e de seus conceitos funcionais e de compatibilidade.
Dito isso é sempre recomendável o uso prioritário do jQuery para facilitar a leitura e utilizaçãos dos recursos da linguagem.
Lembrando que na maioria das vezes o jQuery resolve nossos problemas de compatibilidade dos navegadores.

Sempre utilize seletores em cache.

//Evite:
var offset  = $('.my-class').offset();
var height  = $('.my-class').outerHeight();
var width   = $('.my-class').outerWidth();

//Prefira:
var target  = $('.my-class'),
    offset  = target.offset(),
    height  = target.outerHeight(),
    width   = target.outerWidth();

Mais de um evento em um mesmo elemento, evite a repetição de código.

//Evite:
$("#longlist li").on("mouseenter", function() {
	$(this).text("Click me!");
});

$("#longlist li").on("click", function() {
	$(this).text("Why did you click me?!");
});

//Prefira:
var listItems = $("#longlist li");
listItems.on({
    "mouseenter": function() {
      $(this).text("Click me!");
    },

    "click": function() {
      $(this).text("Why did you click me?!");
    }
});

Ao dividir uma cadeia em várias linhas é preferível colocar o . no inicio.

this.someElement()
  .removeClass('invisible')
  .find('.placeholder').text('new placeholder');

Ao utilizar ajax tenha preferencia na utilização das chamadas abreviadas pois são mais versobsas.

//Evite:
$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

//Prefira:
 $.get( "url", function( data ) {
  $( ".result" ).html( data );
})
  .done(function() {
    alert( "second success" );
  })
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "finished" );
  });

 // ou
 $.post( "url", function( data ) {
  $( ".result" ).html( data );
})
  .done(function() {
    alert( "second success" );
  })
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "finished" );
  });

Cuidado ao utilizar eventos em elemento que vão sofrer re inserção no DOM, pois tais elementos vão perder todos os eventos de js atrelados ao mesmo. EX: Elementos que vão ser renderizados novamente em retornos ajax.
Antigamente usavamos o live do jQuery para fazer a re indexação dos eventos, porém esse método foi descontinuado. Agora usamos uma variação do jQuery.on.

//Prefira:
$( "#dataTable tbody" ).on( "click", "tr", function() {
  console.log( $( this ).text() );
});

//Pois se usar da forma listada abaixo o evento será perdido caso as tr's sejam renderizadas novamente
$( "#dataTable tbody tr" ).on( "click", function() {
  console.log( $( this ).text() );
});