J'ai beaucoup de mal à trouver le DOMElement réel à partir d'un sélecteur jquery. Exemple de code:
<input type="checkbox" id="bob" />
var checkbox = $("#bob").click(function() { //some code } )
et dans un autre morceau de code, j'essaie de déterminer la valeur cochée de la case à cocher.
if ( checkbox.eq(0).SomeMethodToGetARealDomElement().checked )
//do something.
Et s'il vous plaît, je ne veux pas faire:
if ( checkbox.eq(0).is(":checked"))
//do something
Cela me permet de contourner la case à cocher, mais d'autres fois, j'ai besoin du vrai DOMElement.
javascript
jquery
dom
BillRob
la source
la source
applyBindings
attend un nœud DOM et non un sélecteur jQuery. Cette question (et ses réponses) sont exactement ce dont nous avons besoin.Réponses:
Vous pouvez accéder à l'élément DOM brut avec:
ou plus simplement:
Cependant, vous n'en avez pas besoin pour beaucoup (d'après mon expérience). Prenez votre exemple de case à cocher:
est plus "jquery'ish" et (à mon humble avis) plus concis. Et si vous vouliez les numéroter?
Certaines de ces fonctionnalités aident également à masquer les différences entre les navigateurs. Certains attributs peuvent être différents. L'exemple classique est les appels AJAX. Pour faire cela correctement en Javascript brut, il y a environ 7 cas de secours pour
XmlHttpRequest
.la source
$('a').get(0).nodeType==1
dans Firebug sur cette page, est-il évalué à vrai ou échoue-t-il?$('<input type=checkbox>').appendTo('body').get(0).checked
Edit: semble que j'avais tort de supposer que vous ne pouviez pas obtenir l'élément. Comme d'autres l'ont posté ici, vous pouvez l'obtenir avec:
J'ai vérifié que cela renvoie réellement l'élément DOM correspondant.
la source
J'avais besoin d'obtenir l'élément sous forme de chaîne.
Ce qui vous donnera quelque chose comme:
... comme une chaîne plutôt qu'un élément DOM.
la source
Si vous avez besoin d'interagir directement avec l'élément DOM, pourquoi ne pas simplement utiliser
document.getElementById
puisque, si vous essayez d'interagir avec un élément spécifique, vous connaîtrez probablement l'id, car en supposant que le nom de classe est sur un seul élément ou une autre option a tendance à être risqué.Mais, j'ai tendance à être d'accord avec les autres, que dans la plupart des cas, vous devriez apprendre à faire ce dont vous avez besoin en utilisant ce que jQuery vous donne, car il est très flexible.
MISE À JOUR: Basé sur un commentaire: Voici un article avec une belle explication: http://www.mail-archive.com/[email protected]/msg04461.html
Cela renverra la valeur si elle est cochée, ou 0 si ce n'est pas le cas.
$(this).val()
est juste en train d'atteindre le dom et d'obtenir l'attribut "valeur" de l'élément, qu'il soit vérifié ou non.la source