EDITAR: en última instancia, si solo hace cambios de estilo simples, debe usar CSS para lograr esto. No javascript
Este CSS no funcionará para IE6, pero lo hará para prácticamente todos los demás navegadores modernos.
dar al padre block_
elementos de una clase como block
, quitar los estilos en línea de tools
, a continuación, hacer esto:
.block .tools {
display: none;
}
.block:hover .tools {
display: block;
}
Usted puede hacer esto:
$(function() {
$("div[id^=block_]").hover(function (e) {
$(this).children('.tools').toggle(e.type === 'mouseenter');
});
});
Aunque creo Agregaría una clase común a los elementos block_
y seleccionaré por esa clase:
$(function() {
$("div.block").hover(function (e) {
$(this).children('.tools').toggle(e.type === 'mouseenter');
});
});
HTML
<div class="block" id="block_1">
<div class="tools" style="display:none;">Tools Here</div>
</div>
<div class="block" id="block_2">
<div class="tools" style="display:none;">Tools Here</div>
</div>
Dentro de controladores de eventos, la palabra clave this
se refiere al elemento que ha recibido el evento. En este caso, el elemento con el ID block_n
.
Luego usa the .children()
method para seleccionar elemento (s) secundarios que tienen la clase tools
.
The .toggle()
method se puede utilizar para mostrar/ocultar elementos. Le di un argumento que es el resultado de probar el tipo de evento que tuvo lugar. Si el evento fue 'mouseenter'
, se mostrará .tools
; de lo contrario, se ocultará.
El $(function() {...});
externo es un atajo para envolver su código en jQuery's .ready()
method, lo que asegura que su código no se ejecute hasta que el DOM esté listo.
Puede dar the .hover()
method dos funciones si lo prefiere. Entonces usaría los métodos .show()
y .hide()
en lugar de .toggle()
.
$(function() {
$("div[id^=block_]").hover(function() {
$(this).children('.tools').show();
}, function() {
$(this).children('.tools').hide();
});
});
Este funcionó, muchas gracias. – Frank