2009-12-03 30 views
12

Es un poco difícil de explicar, pero lo intentaré.Cómo deseleccionar un enlace usando jquery

Cada vez que alguien hace clic en un enlace de ancla, temporalmente aparece un cuadro de puntos a su alrededor. Por ejemplo, cuando hace clic en el logotipo de stackoverflow en la parte superior de esta página, está rodeado temporalmente por una línea de puntos. Debido a que la página se actualiza, el cuadro de puntos se va.

Pero con ajax, el enlace no se actualiza, por lo que el cuadro de puntos permanece en él. Cómo quitar esa caja punteada. Cuando haces clic en algún lugar de la página, el cuadro de puntos se va. Cómo hacerlo usando jquery o de otra forma.

Respuesta

18

Para anular la selección que puede desencadenar el evento blur en el elemento de anclaje, por ejemplo:

$('a').click(function() { 
    this.blur(); // or $(this).blur(); 
    //... 
}); 

element.blur() quitará el foco del teclado del elemento actual.

3

Esa caja es el foco. Usted podría intentar hacer esto:

$("#mylink").blur(); 

manera:

$("#mylink").click(function() { 
    $.ajax({...}); 
    $(this).blur(); 
    return false; 
}); 
+4

sin necesidad de incorporar jQuery: 'this.blur()' funciona también. – nickf

10

No usar jQuery o JavaScript para solucionar este problema. Puedes eliminarlo usando CSS directo. Sólo tenga cuidado, ya que es una característica usabilidad:

En su hoja de estilo CSS (todos los elementos):

/* Disable all focus styles */ 
:focus { outline: 0; } 

En CSS (enlace dirigida):

#mylink:focus { outline: 0; } 

El problema con el blur() soluciones es el rectángulo de enfoque parpadea y luego se apaga inmediatamente.

+1

+1 Enfoque realmente bueno, el único inconveniente es que no funcionará para IE '<=' 7 (e IE8 en modo compat) – CMS

+1

@CMS tiene toda la razón. Qué fastidio. Utilizo mucho este código y nunca me molesté en comprobar cómo funcionaba en IE. -1 para mí :) –

+0

¡Bonito! No sabía que podíamos hacer esto solo con CSS. –

Cuestiones relacionadas