2012-02-04 30 views
11

Quiero alertar a una opción cuando el cursor del mouse está sobre ella. Utilizo este código:jQuery-Opción de lista de selección hover

$("select > option").hover(function() 
    { 
     alert($(this).attr("id")); 
    }); 

Lamentablemente, esto no funciona ni en IE ni en FF.

¿Puede alguien darme una pista por favor?

+1

verificación de los siguientes enlaces, información útil http://stackoverflow.com/questions/2064011/select-option-hover-is-not-working-in-ie – kobe

+0

una más http://stackoverflow.com/questions/4599975/html-select-box-options-on-hover – kobe

Respuesta

19

Puede intentar esto.

$("select").hover(function (e) 
{ 
    var $target = $(e.target); 
    if($target.is('option')){ 
     alert($target.attr("id"));//Will alert id if it has id attribute 
     alert($target.text());//Will alert the text of the option 
     alert($target.val());//Will alert the value of the option 
    } 
}); 
+2

La razón es que Chrome e IE no permiten capturar eventos directamente en elementos de opción, pero te permiten capturar eventos en elementos seleccionados. –

+0

Eso es muy bueno, gracias Shankar :) – enne87

+0

Estoy luchando con esto para IE 8; Simplemente no estoy viendo mouseover ni eventos de las opciones, simplemente seleccione. Parece que funciona en Chrome y FF, pero no en IE. jQuery ("#" + id) .closest (". T-palette"). Find ("seleccionar"). Hover (función (evento) { T5.console.debug ("hover" + this.id); var $ target = jQuery (event.target); if ($ target.is ("option")) { T5.console.debug ("option =" + $ target.text()); this .title = $ target.text(); } }); –

4

Si comete un cuadro de selección de tipo "cuadro de lista" mediante la adición de un "size = x" atributo de la siguiente manera:

<select size="3"> 
    <option>...</option> 
    <option>...</option> 
</select> 

El evento activable trabajará en los elementos de opción:

$('option').hover(function(){ 
    //code here 
}); 
+1

No está funcionando amigo ... IE, safari y Chrome ... :( –

+1

Probado trabajando en safari y Chrome - no lo prueba IE - http: // jsfiddle.net/TJ6Fz/ –

+0

genial ahora quita el tamaño y pruébalo nuevamente en chrome @A_funs –

1

Aquí hay una solución (bastante decente, supongo) -

  • Utilice el evento mouseover para establecer el tamaño del cuadro de selección igual al no. de sus hijos
  • Use mouseenter evento para obtener las opciones. mouseenter trabajos sobre opciones perfectamente cuando size atributo es allí (todos sabemos que ahora)
  • Uso mouseout evento para ajustar el tamaño del cuadro de selección de nuevo a 1, para conseguir nuestra Selección normal caja posterior :)

JSFiddle

Cuestiones relacionadas