0

<option> ne répond pas des événements click/contextmenu dans IE8?Est-ce un bug de IE8 ou de jQuery?

Voici tout le code pour vérifier localement:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 

<head> 
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="en-us" /> 
<title>International Properties</title> 
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(function(){ 
$('option').bind('click contextmenu',function(){ 
    alert(1); 
}); 
}); 
</script> 
<select size="2"> 
<option class="showme" id="article1">test1</option> 
<option class="showme" id="article2">test2</option> 
</select> 
</body> 
</html> 

EDIT

Le code est fourni je clarifier la question que je rencontrais.

Finalement, je vais faire quelque chose comme:

$('option').contextMenu('myMenu1'... 
+1

Quelle est votre question, de toute façon? –

+0

Ma question est: comment faire l'option répondre aux clics dans IE8? – user198729

+0

Que voulez-vous accomplir? Êtes-vous sûr de ne pas vouloir lier le gestionnaire de clic au select? Cela aurait plus de sens. – erikkallen

Répondre

0

Je pense que vous devez lier les événements à sélectionner au lieu de l'option:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
    <meta http-equiv="Content-Language" content="en-us" /> 
    <title>International Properties</title> 
    <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js"></script> 
    </head> 
    <body> 
    <script type="text/javascript"> 
     $(function(){ 
     $("select").bind("click contextmenu", function(){ 
     alert(1); 
     }); 
     }); 
    </script> 
    <select size="2"> 
     <option value="article1">test1</option> 
     <option value="article2">test2</option> 
    </select> 
    </body> 
</html> 
+0

Non, je dois me lier à 'l'option'. Parce que finalement j'ai besoin de faire apparaître un menu contextuel lorsque la souris est sur' l'option'. – user198729

+0

est: mouseover? ou quoi? –

+0

Impossible d'utiliser les sélections et les options. Vous devez créer votre propre liste déroulante pour que cela fonctionne. – svinto

1

lient le gestionnaire à la sélection, l'utilisation Event.target pour obtenir l'option sur laquelle l'utilisateur a cliqué. cela fonctionne pour moi:

$(function(){ 
$('select').bind('click contextmenu',function(ev){ 
    console.log($(ev.target).val()); 
    return false; 
}); 
}); 

modifier

je l'ai testé dans IE6, IE7 et IE8 sur http://ipinfo.info/netrenderer/index.php, en utilisant le code suivant. la dernière option est sélectionnée, affiche "click() sur: article2".

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 

<head> 
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="en-us" /> 
<title>option.click</title> 
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(function(){ 
$('select').bind('click', function (ev) 
{ 
    ev.target.selected = true; 
    $('body').append('click() on: ' + ev.target.id); 
}); 
$('option:last').click(); 
}); 
</script> 
<select size="2"> 
<option class="showme" id="article1">test1</option> 
<option class="showme" id="article2">test2</option> 
</select> 
</body> 
</html> 
+0

Je n'ai pas mis la valeur à 'option' – user198729

+0

c'est juste un exemple. la partie importante est que 'ev.target' est juste ce que vous cherchez. –

+0

Je viens d'essayer, ne fonctionne pas, il ne peut pas détecter quelle option est actuellement en cours de clic. – user198729