6
votes

.Checked = true ne fonctionne pas avec la fonction JQuery $

Je veux sélectionner une case à cocher lorsqu'une touche est cliquée. XXX PRE>

Lorsque j'ai essayé ce qui suit, la case à cocher n'était pas sélectionnée P>

$('#buttonone').click(function() {
    document.getElementById('checkone').checked=true;
});


3 commentaires

@illarra - Ce n'est pas la meilleure façon de le faire, c'est le meilleur moyen d'un novice JQuery Novice pour rapidement , mais pas efficacement résoudre le problème ... aussi ce lien 't répondre à la question du tout. Il a demandé pourquoi ne pas .checked = true fonctionne ici ? ... Je ne vois pas cela couvert du tout, et je doute que vous trouveriez la réponse sur Google en seulement 10 secondes.


Vous avez raison @nick Craver, j'ai mal compris la deuxième partie de la question ici. J'ai essayé d'annuler mon -1 mais je ne peux pas maintenant. La réponse de @anurag indique clairement.


@illarra - c'est édité, libérant votre vote maintenant :)


7 Réponses :


13
votes

essayer xxx

ou xxx

ou xxx

la raison de votre Le premier code n'a pas fonctionné est dû au fait que vous essayiez de définir la propriété cochée sur un objet JQuery qui n'aura aucun effet visible car il ne fonctionne que sur l'objet Dom natif.

En appelant get (0) ou accédant au premier élément [0] , nous récupérons l'élément DOM natif et peut l'utiliser normalement comme dans votre deuxième exemple. Sinon, définissez l'attribut coché à l'aide de la fonction attr de jQuery qui devrait fonctionner aussi.


5 commentaires

@anish - Ajout d'une explication, s'il vous plaît laissez-moi savoir s'il n'est toujours pas clair, et je vais élaborer plus loin


@Anurag - merci beaucoup. grande explication. Est-ce que cela s'applique à toutes les propriétés et méthodes de JavaScript?


+1, mais je n'aime vraiment pas la version () . C'est inefficace, plus susceptible de se tromper et perpétue la confusion sur les attributs et les propriétés.


@anish - Oui, il y a une grande différence entre les propriétés de l'objet et les attributs DOM. JQuery a tendance à brouiller la distinction au-delà de la reconnaissance parfois. @IM - Dernièrement, je développe la notion que l'ensemble des attributs / propriétés de Dom est en désordre. Je veux dire pourquoi ne pas faire des propriétés des attributs. setattribute (.., ..) mettra à jour la propriété dans la plupart des cas, mais pas vice-versa. Honnêtement, je pense que voir des propriétés en tant que copie de travail qui ne se synchronise pas avec les attributs initiaux ne fabulent pas de la gober, mais c'est juste mon avis.


Celui-ci a fonctionné pour moi: $ ('# checkone') [0] .Checked = true; Merci beaucoup! le premier sur le réglage sur



0
votes

Essayez

$('#checkone').attr('checked', true);


0 commentaires

2
votes

Vous devez utiliser .attr () code> Pour l'objet JQuery em>, comme celui-ci:

document.getElementById('buttonone').onclick = function() {
  document.getElementById('checkone').checked = true;
};


4 commentaires

Ce deuxième exemple met en évidence le problème. Les nouveaux arrivants JQ oublient parfois qu'ils travaillent avec un objet JQ, pas un objet DOM.


@jasongetsDown - Les nouveaux arrivants JQ oublient parfois qu'ils travaillent avec un objet JQ, pas un objet DOM. Beau bout. @Nick cravraver - pourquoi est $ ('# Cochone') [0] .CHECKED = vrai; bien mieux. cela le rendra-t-il vite?


@ anish-m - oui, il a une performance significativement meilleure que .attr () ... Accès à une propriété DOM est toujours plus rapide que d'aller à travers quelque chose d'autre < / I> Pour y accéder.


L'accès à une propriété DOM est toujours plus rapide que de traverser quelque chose d'autre pour y accéder. Merci beaucoup pour l'info



0
votes

Essayez xxx

Cleary Googling pour "jQuery cocher une case à cocher" était le moyen d'aller


0 commentaires

0
votes

ou vous pouvez simplement faire

$('#buttonone').click(function() {
    $('#checkone')[0].checked=true;
});


0 commentaires

1
votes

Aucune de ces réponses n'a fonctionné pour moi car j'avais mal à plusieurs radios avec les mêmes attributs de noms: xxx

JavaScript ne reconnaîtra pas l'attribut coché (évidemment). Cela résultait de l'utilisation de Inclure pour ajouter une section similaire de HTML plusieurs fois. Évidemment, en cliquant sur un bouton radio décochera que la radio bascule avec le même nom.

Voici un jsfiddle pour montrer que deux éléments radio peuvent avoir l'attribut coché mais seulement le dernier est en fait vérifié:

http://jsfiddle.net/bozdoz/5ecq8/

Encore une fois, assez évident, mais éventuellement quelque chose à regarder pour: Supprimer ID et nom attributs des fichiers que vous avez l'intention d'inclure dans d'autres fichiers. plusieurs fois.


0 commentaires

0
votes

Essayez ceci xxx


0 commentaires