Question

J'ai vu une fois un texte sur Jquery indiquant que dans Jquery certaines propriétés ont des noms différents.Je pense que c'était la propriété value qui est accessible dans Jquery en tant que val ou quelque chose comme ça.JQuery fait-il souvent cela?Est-ce qu'une pratique courante de Jquery pour changer les noms de propriétés?

Était-ce utile?

La solution

jQuery ne modifie aucun nom de propriété.

jQuery implémente ses propres méthodes sur les objets jQuery. Celles-ci sont complètement séparées des propriétés DOM ou des méthodes DOM.

Par exemple, vous pouvez récupérer la valeur de n'importe quel contrôle d'entrée à partir d'un objet jQuery en utilisant la méthode .val(). En interne, la méthode .val() sur l'objet jQuery accède au contenu de l'objet DOM (peut-être en utilisant la propriété .value), mais elle ne remplace en aucun cas cette propriété DOM. C'est toujours là que vous choisissez de l'utiliser à la place.

De même, jQuery a une méthode .html() qui renvoie le innerHTML d'un objet. Encore une fois, il s'agit de la méthode jQuery sur un objet jQuery et ne remplace en aucun cas la propriété DOM innerHTML.

Voici quelques exemples de code pour illustrer:

<input id="test" type="text">
<div id="title">This is my Title</div>

Utilisation de javascript simple:

var text = document.getElementById("test").value;
var title = document.getElementById("title").innerHTML;

Utilisation de jQuery:

var text = $("#test").val();
var title = $("#title").html();

Notez que les deux méthodes jQuery sont des appels de méthode, pas des propriétés.

Même lorsque vous utilisez des objets jQuery, vous pouvez extraire l'objet DOM de l'objet jQuery en utilisant la méthode .get(n) et utiliser la propriété DOM, bien qu'il n'y ait généralement pas de raison de le faire:

var text = $("#test").get(0).value;
var title = $("#title").get(0).innerHTML;

Autres conseils

jQuery ne change pas les noms de propriété.jQuery renvoie des instances jQuery et non des éléments dom.

Si vous faites $thing[0].value, cela fonctionnera.Si vous faites $thing.prop("value"), cela fonctionnera.

Si vous utilisez $thing.val(); qui est la méthode val de jQuery (qui est "un peu" comme val mais fait également un tas de magie de cas de bord bizarre) alors il retournera "probablement" la valeur de l'élément dom enveloppé.

Pas que je sache, le cas de val est parce qu'il vous permet de définir ou d'obtenir la valeur de tous les champs de formulaire (champs de texte, boutons radio, cases à cocher, zones de texte, etc.) quelque chose qui n'est pas possible simplement en faisant input.valuedans tous les cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top