Saya memiliki kelas .object
yang memiliki atribut bernama level
. Saya ingin mendapatkan daftar semua nilai yang berbeda level
pada halaman sehingga saya dapat memilih yang tertinggi.
Jika saya melakukan sesuatu seperti:
$(".object").attr("level")
... akankah itu memberi saya daftar nilai yang merupakan nilai dari atribut level? Saya kira tidak, tapi kemudian bagaimana Anda melakukan sesuatu seperti itu?
Catatan: Saya tidak ingin memilih objek HTML untuk manipulasi seperti yang lebih umum, saya ingin memilih nilai atribut.
EDIT: Untuk mendapatkan "level" tertinggi saya telah melakukan ini, tetapi tampaknya tidak berhasil. Saya akan mencoba metode lain yang disarankan sekarang.
var highLevel=0;
$.each(".object[level]", function(i, value) {
if (value>highLevel) {
highLevel=value;
}
});
alert(highLevel);
jquery
css-selectors
Ankur
sumber
sumber
Jawaban:
$(".object").attr("level")
hanya akan mengembalikan atribut pertama.object
elemen pertama .Ini akan memberi Anda array dari semua
level
s:var list = $(".object").map(function(){return $(this).attr("level");}).get();
sumber
.get()
?get
mengubah objek jQuery menjadi array biasa..get()
array terlebih dahulu, kemudian gunakan.map()
fungsi panah plus (dukungan browser: caniuse.com/#search=arrow ) untuk membangun array dengan javascript sederhana:$(".object").get().map(x => x.getAttribute('level'));
Bagian pertama dari pertanyaan, memasukkan nilai atribut ke dalam array. Lihat pertanyaan ini
jQuery mendapatkan atribut sumber img dari daftar dan mendorong ke dalam array
Anda akan berkata
var levelArray = $('.object').map( function() { return $(this).attr('level'); }).get();
Bagian kedua dari pertanyaan, Anda dapat menggunakan teknik ini untuk mendapatkan nilai tertinggi
var maxValue = Math.max.apply( Math, levelArray );
sumber
<script type="text/javascript"> var max = 0; jQuery(document).ready(function(){ jQuery('.object[level]').each(function(){ var num = parseInt($(this).attr('level'), 10); if (num > max) { max = num; } }); alert(max); }); </script>
Saya mengasumsikan markup seperti ini:
<div class="object" level="1">placeholder</div> <div class="object" level="10">placeholder</div> <div class="object" level="20">placeholder</div> <div class="object" level="1000">placeholder</div> <div class="object" level="40">placeholder</div> <div class="object" level="3">placeholder</div> <div class="object" level="5">placeholder</div>
Untuk kode saya, saya mendapat peringatan "1000".
Berikut solusi lain, menggabungkan beberapa balasan lain dari harpo, lomaxx, dan Kobi:
jQuery(document).ready(function(){ var list = $(".object[level]").map(function(){ return parseInt($(this).attr("level"), 10); }).get(); var max = Math.max.apply( Math, list ); alert(max); });
sumber
selektor
$(".object[level]")
akan memberi Anda semua elemen dom dengan kelas
object
dan atributlevel
.Kemudian Anda bisa menggunakan metode .each () untuk mengulangi elemen untuk mendapatkan nilai tertinggi
sumber
$(".object[level=something]")
di mana sesuatu adalah nilai atribut yang Anda cariAnda dapat memperluas fungsionalitas Jquery dan menambahkan implementasi 'attrs' Anda sendiri.
Tambahkan baris kode berikut ke file JavaScript Anda:
jQuery.fn.extend({ attrs: function (attributeName) { var results = []; $.each(this, function (i, item) { results.push(item.getAttribute(attributeName)); }); return results; } });
Sekarang Anda bisa mendapatkan daftar nilai level dengan memanggil:
$(".object").attrs("level")
sumber