2017-01-19 1 views
1
  • 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?

+2

Il n'y a pas de fonction 'checked' dans jQuery. Utilisez ceci à la place de $ (this) .is (': checked') '. –

Répondre

1

Vous devez utiliser $("input").is(":checked")

var checked = $("input:eq(0)").is(":checked") ? 1 : 0; 
 

 
console.log(checked);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input type="checkbox" checked />

+0

Soupir, j'ai essayé '.is (": checked ")' juste avant de poster la question et il a échoué ... Je l'ai couru à nouveau juste maintenant et cela a fonctionné. Merci à tous. –

+0

Pas un problème, s'il vous plaît marquer cette question comme –

+0

oui, ferait mais il a été marqué comme un doublon. Merci tout de même. –