- Windows 7
- VisualStudio 2015
- C# .Net MVC
- jquery 3.1.1
Je dois manquer quelque chose de trivial. J'ai une case à cocher et dessus j'ai mis un élément data
qui contient le numéro "id" (index) de l'article. J'ai la méthode on change
ci-dessouscase cochée jquery propriété et opérateur ternaire
1 $("input#item_IsHere").on("change",
2 function() {
3 var index = $(this).data("index");
4 var checked = $(this).checked === true ? 1 : 0;
5
6 console.log("on change: " + $(this).checked);
7 //...
8 });
Lorsque je clique sur la case à cocher la méthode et le changement des feux index
est défini comme je pense. Ce que je ne pensais pas, c'est que la propriété checked
de $(this)
ne serait pas définie.
J'ai aussi essayé un violon pour cela, mais le violon travaillé:/
Je vois cela dans Chrome et Firefox. Lorsque la page est chargée, je vois la case à cocher et j'apporte le débogueur des outils de développement. Dans le débogueur, j'ai mis un point d'arrêt sur le console.log
(lise 6). Lorsque je clique sur la case à cocher, elle court jusqu'au point d'arrêt et attend. Je peux survoler le premier $(this)
(ligne 3) et je peux voir que la propriété checked
est définie sur true
dans ce cas.
La question est que la valeur de var checked
finit par être 0 et le résultat de la console.log
est
on change: undefined
Oh, je l'ai fait aussi l'opérateur ternaire sur la ligne 4 comme
var checked = $(this).checked ? 1 : 0;
and
var checked = $(this).is(":checked") ? 1 : 0;
and
if ($(this).checked) {
checked = 1;
} else {
checked = 0;
}
avec les mêmes résultats.
Qu'est-ce que je ne vois pas?
Il n'y a pas de fonction 'checked' dans jQuery. Utilisez ceci à la place de $ (this) .is (': checked') '. –