jQuery resaltar el enlace cuando se hace clic
Pregunta
¿Cómo uso jquery para resaltar el enlace cuando hago clic en él?
Por ejemplo, cuando hago clic en el enlace class1_1, quiero que este enlace sea rojo (u otro color).
El código javascript aquí:
<script type="text/javascript">
$(function(){
$("#menu li").each(function(){
$(this).click(function(event){
var ul=$(this).children("ul")
var span = $(this).children("span")
if(ul.html()!=null)
{
if(ul.css("display")=="none")
{
ul.css("display","block");
span.addClass("up")
}else
{
ul.css("display","none")
span.removeClass("up")
}
event.stopPropagation();
}else
{
event.stopPropagation();
}
});
});
return false;
});
</script>
El código html aquí:
<ul id="menu">
<li class="title"><span>class1 </span>
<ul>
<li><a href="">class1_1</a></li>
<li><a href="">class1_2</a></li>
</ul>
</li>
<li class="title"><span>class2</span>
<ul>
<li><span>class2_1</span>
<ul>
<li><a href="">class2_1_1</a></li>
<li><a href="">class2_1_1</a></li>
</ul>
</li>
</ul>
</li>
</ul>
tal vez no pueda explicar mi pregunta claramente, quiero decir que es el último enlace de un clic que se haga
color a rojo y otros enlaces establecidos a ese color predeterminado
Solución 5
<script type = "text/javascript" >
$(function() {
$("#menu li").each(function() {
$(this).click(function(event) {
$("#menu li").removeClass("high");
$(this).addClass("high");
var ul = $(this).children("ul")
var span = $(this).children("span")
if (ul.html() != null) {
if (ul.css("display") == "none") {
ul.css("display", "block");
span.addClass("up")
} else {
ul.css("display", "none") span.removeClass("up")
}
event.stopPropagation();
} else {
event.stopPropagation();
}
});
});
return false;
});
</script>
<style>
.high{color:red}
</style>
Otros consejos
Es posible usar CSS, no se requiere jQuery:
Resaltar:
a:active {
background-color: #FF0000;
}
Cambiar el color del enlace:
a:active {
color: #FF0000;
}
Editar: respondiendo a tu comentario ... Si tus enlaces no dirigen el navegador a otra página, puedes usar La respuesta de Mike Robinson para lograr el mismo efecto sin salir de la página y sin cambiar el color a onblur predeterminado.
Piensa que esto debería hacerlo, aunque no tengo jQuery a mano en este momento. Asume que "arriba" es una clase que hace que su enlace sea rojo:
$("ul#menu a").click(function(){
$(this).addClass('up');
});
Esto debería funcionar:
Javascript:
$(function(){
$('.class1').click(function() {
$(this).toggleClass('active1');
});
});
CSS:
a.class1 { color: red; }
a.active1 { color: blue; }
HTML:
<a href="#" class="class1">some text</a>
Es mejor usar toggleClass (2 en 1) en lugar de addClass / removeClass.
Recomendaría la http://plugins.jquery.com/project/color plugin jquery.color Te permitirá animar el color en todo tipo de elementos html.
Javascript:
$('.link').click(function() {
if (!$(this).hasClass('hi')) {
// If this link is not already highlighted, highlight it and make
// sure other links of class .link are not highlighted.
$('.hi').removeClass('hi');
$(this).addClass('hi');
}
});
css:
a.hi { color: red; }
html:
<a href="#" class="link">my text</a>
<a href="#" class="link">that text</a>
<a href="#" class="link">this text</a>
Puedes hacerlo usando la pseudo-clase CSS activa . Agrega un estilo especial a un elemento activado.
Por ejemplo, puedes hacer esto:
a: active { color: red; }
¡Ten cuidado, a: activo DEBE venir después de: pasar sobre la definición de CSS para que sea efectivo!