Maison >interface Web >js tutoriel >Explication détaillée des exemples d'utilisation des fonctions attr() et prop() dans jQuery (avec différences d'utilisation)_jquery

Explication détaillée des exemples d'utilisation des fonctions attr() et prop() dans jQuery (avec différences d'utilisation)_jquery

WBOY
WBOYoriginal
2016-05-16 15:22:501416parcourir

L'exemple de cet article décrit l'utilisation des fonctions attr() et prop() dans jQuery. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

1. Méthode attr() de jQuery

La méthode attr() est utilisée dans jquery pour obtenir et définir les attributs des éléments. attr est l'abréviation d'attribut. Attr() est souvent utilisée dans les opérations jQuery DOM. attr() a 4 expressions.

1. attr (nom de l'attribut) //Obtenir la valeur de l'attribut (obtenir la valeur de l'attribut du premier élément correspondant. Cette méthode peut facilement obtenir la valeur d'un attribut du premier élément correspondant. Si l'élément ne le fait pas avoir un attribut correspondant, renvoie undefined )

2. attr(nom de l'attribut, valeur de l'attribut) //Définissez la valeur de l'attribut (Définissez une valeur d'attribut pour tous les éléments correspondants.)

3. attr (nom de l'attribut, valeur de la fonction) //Définissez la valeur de la fonction de l'attribut (Définissez une valeur d'attribut calculée pour tous les éléments correspondants. Ne fournissez pas de valeur, mais fournissez une fonction et la valeur calculée par celle-ci. la fonction est la valeur de l'attribut)

4.attr(properties) //Définissez plusieurs valeurs d'attribut pour l'élément spécifié, à savoir : {Nom d'attribut un : "Valeur d'attribut un", Nom d'attribut deux : "Valeur d'attribut deux", … … }. (C'est la meilleure façon de définir de nombreux attributs par lots sur tous les éléments correspondants. Notez que si vous souhaitez définir l'attribut de classe d'un objet, vous devez utiliser « className » comme nom d'attribut. Ou vous pouvez utiliser directement « class » ou 'identifiant' )

Exemple de code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery中attr()方法</title>
<script src="js/jquery-1.4.2.min.js" language="javascript" type="text/javascript" ></script>
<style>
p{color:red}
li{color:blue;}
.lili{font-weight:bold;color:red;}
#lili{font-weight:bold;color:red;}
</style>
</head>
<body>
<p title="你最喜欢的水果是。">你最喜欢的水果是?</p>
<ul>
<li title="苹果汁">苹果</li>
<li title="橘子汁" alt="123">橘子</li>
<li title="菠萝汁">菠萝</li>
</ul>
<script>
...
</script>
</body>
<html>

1.attr(name)//Obtenir la valeur de l'attribut

1.1 Utilisez attr(name) pour obtenir la valeur du titre :

<script>
alert($("ul li:eq(1)").attr("title"));
</script>

Résultat :

1.2 Utilisez attr(name) pour obtenir la valeur alt :

<script>
alert($("ul li:eq(1)").attr("alt"));
</script>

Résultat :

2. attr(name,value) //Définissez la valeur de l'attribut

2.1 Utilisez attr(name,value) pour modifier la valeur du titre en : Ne mangez pas d'oranges

<script>
$("ul li:eq(1)").attr("title","不吃橘子");
alert($("ul li:eq(1)").attr("title"));
</script>

Résultat :

3. attr(name,fn) //Définir la valeur de fonction de l'attribut

3.1 Définissez la valeur de l'attribut alt sur la valeur de l'attribut title.

<script>
$("ul li:eq(1)").attr("title",function(){ return this.alt});
alert($("ul li:eq(1)").attr("title"));
</script>

Résultat :

4.attr(properties) //Définissez un objet sous la forme de "nom/valeur" comme attributs de tous les éléments correspondants

4.1 Obtenez le deuxième 25edfb22a4f469ecb59f1190150159c6 dans ff6d136ddc5fdfeffaf53ff6ee95f185 et définissez les attributs title et alt.

<script>
$("ul li:eq(1)").attr({title:"不喝橘子汁",alt:"不是123"});
alert($("ul li:eq(1)").attr("title"));
alert($("ul li:eq(1)").attr("alt"));
</script>

Résultat :

4.2 Obtenez la deuxième classe de paramètres 25edfb22a4f469ecb59f1190150159c6

<script>
$("ul li:eq(1)").attr({className:"lili"});
</script>

Résultat :

4.3 Obtenez l'identifiant de paramètre du deuxième 25edfb22a4f469ecb59f1190150159c6 dans ff6d136ddc5fdfeffaf53ff6ee95f185.

<script>
$("ul li:eq(1)").attr({id:"lili"});
</script>

Résultat :

4.4 Obtenez le deuxième 25edfb22a4f469ecb59f1190150159c6 dans ff6d136ddc5fdfeffaf53ff6ee95f185

<script>
$("ul li:eq(1)").attr({style:"color:red"});
</script>

Résultat :

Il est faux d'ajouter alt dans li. Il ne peut être utilisé que dans les éléments img, area et input (y compris les éléments d'applet). Pour les éléments d'entrée, l'attribut alt est destiné à remplacer l'image du bouton de soumission. Afin d'expliquer la méthode attr() en détail ici, il n'y a pas d'attribut approprié, donc alt est utilisé comme exemple. C'est uniquement pour l'apprentissage et la référence de l'utilisation de la méthode attr().

Voici la différence entre alt et tite.

alt : Il s'agit du texte utilisé pour décrire le graphique. Lorsque l'image ne peut pas être affichée, ces textes seront affichés à la place de l'image. Le texte sera également affiché lorsque la souris sera déplacée sur l'image.
titre : C'est le texte qui sera affiché une fois que la souris sera placée dessus.

Alors comment supprimer des attributs ?

Le mot-clé pour supprimer les attributs dans jquery est : removeAttr. Notez que A est en majuscule. Voyez comment l'utiliser :
. C'est le même code html que dans l'utilisation 1. Je veux supprimer l'attribut title de li, donc ça y est :

<script>
$("ul li:eq(1)").removeAttr ("title");
</script>

C'est aussi simple que cela, attr est en fait une implémentation simplifiée de getAttribute en js natif, et RemoveAttr est l'abréviation de RemoveAttribute.

Alors, existe-t-il un attribut similaire à attr() ?

val() dans jquery est similaire à ,
$(this).val(); Obtient la valeur d'un nœud d'élément, équivalent à $(this).attr("value");
$(this).val(value); Définir la valeur d'un nœud d'élément, équivalent à $(this).attr("value",value);

2. Méthode prop() de jQuery :

La fonction

prop() est utilisée pour définir ou renvoyer la valeur d'attribut de l'élément correspondant à l'objet jQuery actuel.

Cette fonction appartient à l'objet (instance) jQuery. Si vous devez supprimer une propriété d'un élément DOM, utilisez la fonction removeProp().

Grammaire

Cette fonction a été ajoutée dans jQuery 1.6. La fonction prop() a les deux utilisations suivantes :

Utilisation 1 :

jQueryObject.prop( propertyName [, value ] )
Définit ou renvoie la valeur de la propriété spécifiée propertyName. Si le paramètre value est spécifié, cela signifie définir la valeur de la propriété propertyName sur value ; si le paramètre value n'est pas spécifié, cela signifie renvoyer la valeur de la propriété propertyName.

La valeur du paramètre peut également être une fonction. prop() parcourra et exécutera la fonction en fonction de tous les éléments correspondants. Le pointeur this dans la fonction pointera vers l'élément DOM correspondant. prop() transmettra également deux paramètres à la fonction : le premier paramètre est l'index de l'élément dans l'élément correspondant et le deuxième paramètre est la valeur actuelle de l'attribut propertyName de l'élément. La valeur de retour de la fonction est la valeur définie pour l'attribut propertyName de l'élément.

Utilisation 2 :

jQueryObject.prop( objet )
Définissez la valeur d'un nombre quelconque de propriétés simultanément en tant qu'objet. Chaque attribut de l'objet object correspond à propertyName et la valeur de l'attribut correspond à value.

Remarque : toutes les opérations de "définition des attributs" de la fonction prop() concernent chaque élément correspondant à l'objet jQuery actuel ; toutes les opérations de "lecture des attributs" concernent uniquement le premier élément correspondant.
Paramètres

Veuillez trouver les paramètres correspondants en fonction des noms de paramètres définis dans la section de syntaxe précédente.

Paramètres Description
Nom de la propriété String type spécifie le nom de l'attribut.
valeur Type facultatif/objet/fonction spécifie la valeur de l'attribut, ou la fonction qui renvoie la valeur de l'attribut.
objet Objet spécifié par type , utilisé pour encapsuler plusieurs paires clé-valeur et définir plusieurs propriétés en même temps.
参数value可以是包括对象和数组在内的任意类型。

返回值

prop()函数的返回值是任意类型,返回值的类型取决于当前prop()函数执行的是"设置属性"操作还是"读取属性"操作。

如果prop()函数执行的是"设置属性"操作,则返回当前jQuery对象本身;如果是"读取属性"操作,则返回读取到的属性值。

如果当前jQuery对象匹配多个元素,返回属性值时,prop()函数只以其中第一个匹配的元素为准。如果该元素没有指定的属性,则返回undefined。

prop()和attr()的主要区别:prop()函数针对的是DOM元素(JS Element对象)的属性,attr()函数针对的是DOM元素所对应的文档节点的属性。详情请查看jQuery函数attr()和prop()的区别。

注意事项

1、如果通过prop()函数更改d5fd7aea971a85678ba271703566ebfd和bb9345e55eb71822850ff156dfde57c8元素的type属性,在多数浏览器上将会抛出一个错误,因为该属性一般不允许在后期更改。

2、如果使用prop()函数操作表单元素的checked、selected、disabled等属性,如果该元素被选中(或禁用),则返回true,否则(意即HTML中没有该属性)返回false。

3、prop()函数还可以设置或返回DOM元素的Element对象上的某些属性,例如:tagName、selectedIndex、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected等属性。

4、在IE9及更早版本中,如果使用prop()函数设置的属性值不是一个简单的原始值(String、Number、Boolean),并且在对应的DOM元素被销毁之前,该属性没有被移除,则可能会导致内存泄漏问题。如果你只是为了存储数据,建议你使用data()函数,以避免内存泄漏问题。

示例&说明

以下面这段HTML代码为例:

<div id="n1">
  <p id="n2" class="demo test" data-key="UUID" data_value="1235456465">CodePlayer</p>
  <input id="n3" name="order_id" type="checkbox" value="1">
  <input id="n4" name="order_id" type="checkbox" checked="checked" value="2">
</div>

我们编写如下jQuery代码:

var $n2 = $("#n2");
// prop()操作针对的是元素(Element对象)的属性,而不是元素节点(HTML文档)的属性
document.writeln( $n2.prop("data-key") ); // undefined
document.writeln( $n2.prop("data_value") ); // undefined
document.writeln( $n2.prop("id") ); // n2
document.writeln( $n2.prop("tagName") ); // P
document.writeln( $n2.prop("className") ); // demo test
document.writeln( $n2.prop("innerHTML") ); // CodePlayer
document.writeln( typeof $n2.prop("getAttribute") ); // function
// prop()设置的属性也是针对元素(Element对象),因此也可以通过元素本身直接访问
$n2.prop("prop_a", "CodePlayer");
document.writeln( $n2[0].prop_a ); // CodePlayer
var n2 = document.getElementById("n2");
document.writeln( n2.prop_a ); // CodePlayer
// 以对象形式同时设置多个属性,属性值可以是对象、数组等任意类型
$n2.prop( { 
  prop_b: "baike",
  prop_c: 18,
  site: { name: "CodePlayer", url: "http://www.jb51.net/" }
} );
document.writeln( $n2[0].prop_c ); // 18
document.writeln( $n2[0].site.url ); // http://www.jb51.net/
// 反选所有的复选框(没选中的改为选中,选中的改为取消选中)
$("input:checkbox").prop("checked", function(index, oldValue){
  return !oldValue;
});

附:jquery中attr和prop的区别

在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了。

关于它们两个的区别,网上的答案很多。这里谈谈我的心得,我的心得很简单:

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

上面的描述也许有点模糊,举几个例子就知道了。

a6443d4e73fb56505e4fe5afe0f45048百度5db79b134e9f6b82c0b36e0489ee08ed

这个例子里3499910bf9dac5ae3c52d5ede7383485元素的DOM属性有“href、target和class",这些属性就是3499910bf9dac5ae3c52d5ede7383485元素本身就带有的属性,也是W3C标准里就包含有这几个属性,或者说在IDE里能够智能提示出的属性,这些就叫做固有属性。处理这些属性时,建议使用prop方法。

ddec45da1f9fc3d73ad4ec9e6cfd94cb删除5db79b134e9f6b82c0b36e0489ee08ed

这个例子里3499910bf9dac5ae3c52d5ede7383485元素的DOM属性有“href、id和action”,很明显,前两个是固有属性,而后面一个“action”属性是我们自己自定义上去的,3499910bf9dac5ae3c52d5ede7383485元素本身是没有这个属性的。这种就是自定义的DOM属性。处理这些属性时,建议使用attr方法。使用prop方法取值和设置属性值时,都会返回undefined值。

再举一个例子:

4bdf8ad58f944d2707b679ce3fbf035c是否可见
5c7c8b9482dd4c5245d65c5e97d6f9d3是否可见

像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。

$("#chk1").prop("checked") == false
$("#chk2").prop("checked") == true

如果上面使用attr方法,则会出现:

$("#chk1").attr("checked") == undefined
$("#chk2").attr("checked") == "checked"

希望本文所述对大家jQuery程序设计有所帮助。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn