Cada vez que utilizamos JQuery estamos haciendo uso de selectores .Unos selectores serán mas sencillos y otros mas complejos y según vayamos adquiriendo experiencia los manejaremos mejor .Ahora bien siempre hay sorpresas y cosas a mejorar supongamos que disponemos de la siguiente página HTML con el siguiente código de JQuery.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jquery-1.11.0.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#zona1 li ul li:last").css("color","red");
});
</script>
</head>
<body>
<div id="zona1">
<ul>
<li>Primero</li>
<li>Segundo</li>
<li>Submenu
<ul>
<li>Cuarto</li>
<li>Quinto</li>
</ul>
</li>
<div id="zona2">
<ul>
<li>Primero</li>
<li>Segundo</li>
<li>Submenu
<ul>
<li>Cuarto</li>
<li>Quinto</li>
</ul>
</li>
El código es sencillo y selecciona el último elemento de una sublista de la zona1
El concepto de JQuery Context o contexto.
La selección que hemos hecho nos parece bastante correcta .Ahora bien muchas personas se olvidan de que JQuery permite un segundo parametro cuando seleccionamos . Es decir podríamos haber realizado la selección de la siguiente forma .
<script type="text/javascript">
$(document).ready(function() {
$("li ul li:last","#zona1").css("color","red");
});
</script>
El resultado hubiera sido el mismo .Ahora bien ¿para que sirve este parámetro ? . Este parámetro se le denomina contexto y sirve para decirle a JQuery en que parte del arbol DOM debe hacer la busqueda de nodos a traves de sus selectores . Por ejemplo en este momento tenemos un arbol DOM como el siguiente .
El contexto en el que JQuery realizará la busqueda si utilizamos el siguiente código :
<pre><script type="text/javascript">
$(document).ready(function() {
$("#zona1 li ul li:last").css("color","red");
});
</script>
Es como podemos ver en el diagrama la página completa
Ahora bien si el selector le hubiéramos asignado un contexto de partida .
<script type="text/javascript">
$(document).ready(function() {
$("li ul li:last","#zona1").css("color","red");
});
</script>
La búsqueda hubiera sido mucho mas óptima ya que el JQuery Context sería el siguiente .
JQuery Context Object (Conclusiones)
No siempre es necesario usar el contexto ya en muchas situaciones la página no es muy grande o no tenemos que utilizar un selector que se aplique a una única zona concreta del documento. Sin embargo hay otras muchas en las que nos puede ser util y mejorará el rendimiento.