Événement clic sur l'option de sélection de l'élément dans le navigateur chrome
Je vais avoir un problème dans Chrome
avec les éléments suivants:
var items = $("option", obj);
items.each(function(){
$(this).click(function(){
//alert("test");
process($(this).html());
return false;
});
});
La click
événement ne semble pas le feu dans Chrome
, mais travaille en Firefox
.
Je veux être en mesure de click
sur un option
élément d'une liste déroulante, si je faire à la place un autre type d'élément, disons <li>
il fonctionne très bien. Des idées? Merci.
Vous devez vous connecter pour publier un commentaire.
Je ne crois pas que l'événement click est valable sur les options. Il est valide, cependant, sur certains éléments. Donner à ceci un essai:
Nous pouvons atteindre cet autre manière en dépit de l'appel direct de l'événement avec
<select>
.JS partie:
Partie HTML:
La voie de la facilité de changement de la sélection et de la mise à jour c'est cette.
un autre exemple:
un autre exemple:
.val('value')
la'value'
est une valeur deoption
value
attribut. Exemple:<option value="3">
$('#select_element_selector').val('3').change();
J'ai trouvé que la suite travaillé pour moi - au lieu d'utiliser sur cliquez sur modifier par exemple:
J'ai eu simmilar question.
change
événement n'était pas bon pour moi parce que j'ai besoin de rafraîchir certaines données lorsque l'utilisateur clique suroption
. Après quelques essais j'ai cette solution:Je suis d'accord que c'est très laid, et vous devriez coller avec
change
cas où vous le pouvez, mais cela a résolu mon problème.Peut-être l'une des nouvelles versions de jquery prend en charge l'événement de clic sur options. Il a travaillé pour moi:
Mise à JOUR: UN possible cas d'utilisation pourrait être le suivant: un utilisateur envoie Un formulaire html et les valeurs sont insérées dans une base de données. Cependant, l'une ou plusieurs des valeurs par défaut et vous marquer ce les inscriptions automatisées. Vous aussi vous montrer à l'utilisateur que son entrée est généré automatiquement, mais si il confirmer l'inscription en cliquant sur le déjà sélectionné l'option changer le drapeau dans la base de données. L'un des rares sue cas, mais possible...
$(document)
peuvent polluer l'document
cliquez sur les événements, en particulier lorsque le débogage sur le Chrome dev Tools (par exemple). Je préfère (dans ce cas, par exemple) à utiliser$('select option')
(en d'autres mots, d'attribuer l'événement directement à l'élément).À la recherche pour 2018.
Cliquez sur l'événement sur la balise d'option, à l'intérieur d'une balise select, n'est pas tiré sur Chrome.
De changement de l'utilisation de l'événement, et la capture de l'option sélectionnée:
Être conscient que $cible peut être une collection d'objets si la balise select est multiple.
- Je utiliser une des deux partie de la solution
gestionnaire de la nouvelle élément sélectionné.
HTML
JS
Ce qui fonctionne pour moi est d'abord de modifier la valeur de la liste déroulante, par exemple
$('#selectorForOption').attr('selected','selected')
puis déclencher le changement
$('#selectorForOption').changed()
Cette façon, tout le javascript qui est câblé à
Je sais que ce bout de code fonctionne pour la reconnaissance de l'option, cliquez sur (au moins en Chrome et FF). En outre, il fonctionne si l'élément n'était pas là sur les DOM de la charge. J'ai l'habitude d'utiliser, lorsque j'sections d'entrée des entrées dans un seul sélectionner l'élément et je ne veux pas le titre de la section pour être cliqué.
Depuis
$(this)
n'est pas correcte, plus avec ES6 flèche fonction qui n'ont pas la mêmethis
quefunction() {}
, vous ne devriez pas utiliser $( this ) si vous utilisez ES6 syntaxe.En outre, selon l'officiel de jQuery réponse, il y a un moyen plus simple de faire que ce que le haut de réponse dit.
La meilleure façon d'obtenir le code html d'une option est d'utiliser
Vous pouvez remplacer
html()
partext()
ou tout ce que vous voulez (maishtml()
était dans la question d'origine).Ajoutez simplement de l'écouteur d'événement
change
, avec le jQuery méthode abrégéechange()
, pour déclencher votre code lorsque le choix de l'option de changement.Si vous voulez juste pour connaître la valeur de la
option:selected
(l'option que l'utilisateur a choisi), vous pouvez simplement utiliser$('#yourSelect').val()
Solution de contournement:
$('#select_id').on('change', (function() {
$(this).children(':selected').trigger('click');
}));