Rumah >hujung hadapan web >tutorial js >Penjelasan terperinci tentang contoh penggunaan fungsi attr() dan prop() dalam jQuery (dengan perbezaan penggunaan)_jquery
Contoh dalam artikel ini menerangkan penggunaan fungsi attr() dan prop() dalam jQuery. Kongsikan dengan semua orang untuk rujukan anda, butirannya adalah seperti berikut:
1. Kaedah attr() jQuery
Kaedah attr() digunakan dalam jquery untuk mendapatkan dan menetapkan atribut elemen attr ialah singkatan daripada atribut Attr() sering digunakan dalam operasi DOM jQuery() mempunyai 4 ungkapan.
1. attr (nama atribut) //Dapatkan nilai atribut (dapatkan nilai atribut elemen padanan pertama. Kaedah ini dengan mudah boleh mendapatkan nilai atribut daripada elemen padanan pertama. Jika elemen tidak mempunyai atribut yang sepadan, mengembalikan tidak ditentukan )
2. attr(nama atribut, nilai atribut) //Tetapkan nilai atribut (Tetapkan nilai atribut untuk semua elemen yang sepadan.)
3. attr (nama atribut, nilai fungsi) //Tetapkan nilai fungsi atribut (Tetapkan nilai atribut yang dikira untuk semua elemen yang sepadan. Jangan berikan nilai, tetapi berikan fungsi dan nilai yang dikira oleh ini fungsi ialah nilai atribut )
4.attr(properties) //Tetapkan berbilang nilai atribut untuk elemen yang ditentukan, iaitu: {Attribute name one: "Attribute value one", Attribute name two: "Attribute value two", … … }. (Ini ialah cara terbaik untuk menetapkan banyak atribut dalam kelompok merentas semua elemen yang sepadan. Ambil perhatian bahawa jika anda ingin menetapkan atribut kelas sesuatu objek, anda mesti menggunakan 'className' sebagai nama atribut. Atau anda boleh terus menggunakan 'class' atau 'id' )
Kod sampel:
<!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(nama)//Dapatkan nilai atribut
1.1 Gunakan attr(nama) untuk mendapatkan nilai tajuk:
<script> alert($("ul li:eq(1)").attr("title")); </script>
Hasil:
1.2 Gunakan attr(nama) untuk mendapatkan nilai alt:
<script> alert($("ul li:eq(1)").attr("alt")); </script>
Hasil:
2. attr(nama,nilai) //Tetapkan nilai atribut
2.1 Gunakan attr(nama,nilai) untuk mengubah suai nilai tajuk kepada: Jangan makan oren
<script> $("ul li:eq(1)").attr("title","不吃橘子"); alert($("ul li:eq(1)").attr("title")); </script>
Hasil:
3. attr(nama,fn) //Tetapkan nilai fungsi atribut
3.1 Tetapkan nilai atribut alt kepada nilai atribut tajuk.
<script> $("ul li:eq(1)").attr("title",function(){ return this.alt}); alert($("ul li:eq(1)").attr("title")); </script>
Hasil:
4.attr(properties) //Tetapkan objek dalam bentuk "nama/nilai" sebagai atribut semua elemen yang sepadan
4.1 Dapatkan 25edfb22a4f469ecb59f1190150159c6 kedua dalam ff6d136ddc5fdfeffaf53ff6ee95f185
<script> $("ul li:eq(1)").attr({title:"不喝橘子汁",alt:"不是123"}); alert($("ul li:eq(1)").attr("title")); alert($("ul li:eq(1)").attr("alt")); </script>
Hasil:
4.2 Dapatkan kelas tetapan 25edfb22a4f469ecb59f1190150159c6 kedua dalam ff6d136ddc5fdfeffaf53ff6ee95f185.
<script> $("ul li:eq(1)").attr({className:"lili"}); </script>
Hasil:
4.3 Dapatkan id tetapan 25edfb22a4f469ecb59f1190150159c6 kedua dalam ff6d136ddc5fdfeffaf53ff6ee95f185.
<script> $("ul li:eq(1)").attr({id:"lili"}); </script>
Hasil:
4.4 Dapatkan 25edfb22a4f469ecb59f1190150159c6 kedua dalam ff6d136ddc5fdfeffaf53ff6ee95f185
<script> $("ul li:eq(1)").attr({style:"color:red"}); </script>
Hasil:
Adalah salah untuk menambah alt dalam li Ia hanya boleh digunakan dalam img, kawasan dan elemen input (termasuk elemen applet). Untuk elemen input, atribut alt bertujuan untuk menggantikan imej butang hantar. Untuk menerangkan kaedah attr() secara terperinci di sini, tiada atribut yang sesuai, jadi alt digunakan sebagai contoh sahaja untuk pembelajaran dan rujukan penggunaan kaedah attr().
Berikut ialah perbezaan antara alt dan tite.
alt: Ini ialah teks yang digunakan untuk menerangkan grafik Apabila imej tidak dapat dipaparkan, teks ini akan dipaparkan dan bukannya imej. Teks juga akan dipaparkan apabila tetikus dialihkan ke atas imej.
tajuk: Ia adalah teks yang akan dipaparkan selepas tetikus diletakkan di atasnya.
Jadi bagaimana untuk memadamkan atribut?
Kata kunci untuk memadamkan atribut dalam jquery ialah: removeAttr. Sila ambil perhatian bahawa A menggunakan huruf besar
Ia adalah kod html yang sama dalam penggunaan satu. Saya mahu memadamkan atribut tajuk li, jadi ini ialah:
<script> $("ul li:eq(1)").removeAttr ("title"); </script>
Semudah itu, attr sebenarnya merupakan pelaksanaan ringkas getAttribute dalam js asli, dan removeAttr ialah singkatan removeAttribute.
Jadi adakah terdapat atribut yang serupa dengan attr()?
val() dalam jquery adalah serupa dengan ,
$(this).val(); Mendapat nilai nod elemen, bersamaan dengan $(this).attr("value");
$(this).val(value); Tetapkan nilai nod elemen, bersamaan dengan $(this).attr("value",value);
2. Kaedah prop() jQuery:
Fungsiprop() digunakan untuk menetapkan atau mengembalikan nilai atribut elemen yang dipadankan dengan objek jQuery semasa.
Fungsi ini tergolong dalam objek jQuery (contoh). Jika anda perlu mengalih keluar sifat unsur DOM, gunakan fungsi removeProp().
Tatabahasa
Fungsi ini telah ditambahkan dalam jQuery 1.6. Fungsi prop() mempunyai dua kegunaan berikut:
Penggunaan 1:
jQueryObject.prop( propertyName [, nilai ] )
Tetapkan atau kembalikan nilai propertyName harta yang ditentukan. Jika parameter nilai ditentukan, ini bermakna menetapkan nilai propertyName kepada nilai jika parameter nilai tidak ditentukan, ia bermakna mengembalikan nilai propertyName.
Nilai parameter juga boleh menjadi fungsi prop() akan merentasi dan melaksanakan fungsi berdasarkan semua elemen yang dipadankan. prop() juga akan menghantar dua parameter kepada fungsi: parameter pertama ialah indeks elemen dalam elemen padanan, dan parameter kedua ialah nilai semasa atribut propertyName elemen. Nilai pulangan fungsi ialah nilai yang ditetapkan untuk atribut propertyName elemen.
Penggunaan 2:
jQueryObject.prop( objek )
Tetapkan nilai sebarang bilangan sifat secara serentak sebagai objek. Setiap atribut objek objek sepadan dengan propertyName, dan nilai atribut sepadan dengan nilai.
Nota: Semua operasi "atribut tetapan" bagi fungsi prop() adalah untuk setiap elemen yang dipadankan dengan objek jQuery semasa; semua operasi "atribut membaca" hanya untuk elemen dipadankan yang pertama.
Parameter
Sila cari parameter yang sepadan berdasarkan nama parameter yang ditakrifkan dalam bahagian sintaks sebelumnya.
Parameter | Penerangan |
---|---|
propertyName | Jenis rentetan menentukan nama atribut. |
nilai | Jenis Pilihan/Objek/Fungsi menentukan nilai atribut atau fungsi yang mengembalikan nilai atribut. |
objek | Objek yang ditentukan mengikut jenis , digunakan untuk merangkum berbilang pasangan nilai kunci dan menetapkan berbilang sifat pada masa yang sama. |
返回值
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程序设计有所帮助。