<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
Защо горното не работи и как да го направя?
Начинът на jQuery:
$('#test').attr('id')
Във вашия пример:
$(document).ready(function() {
console.log($('#test').attr('id'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test"></div>
Или чрез DOM:
$('#test').get(0).id;
или дори :
$('#test')[0].id;
и причината за използването на $('#test').get(0)
в JQuery или дори $('#test')[0]
е, че $('#test')
е селектор на JQuery и връща масив() от резултати, а не единичен елемент по подразбиране
Алтернатива за DOM селектор в jquery е
$('#test').prop('id')
което е различно от .attr()
и $('#test').prop('foo')
прихваща определеното DOM свойство foo
, докато $('#test').attr('foo')
прихваща определения HTML атрибут foo
и можете да намерите повече подробности за разликите тук.
$('selector').attr('id')
ще върне id на първия съвпаднал елемент. Справка.
Ако съвпадналото ви множество съдържа повече от един елемент, можете да използвате конвенционалния .each
iterator, за да върнете масив, съдържащ всеки от ids:
var retval = []
$('selector').each(function(){
retval.push($(this).attr('id'))
})
return retval
Или, ако желаете да бъдете малко по-груби, можете да избегнете обвивката и да използвате .map
съкращение.
return $('.selector').map(function(index,dom){return dom.id})
$('#test')
връща jQuery обект, така че не можете да използвате просто object.id
, за да получите неговия Id
трябва да използвате $('#test').attr('id')
, който връща необходимия ви ID
на елемента
Това може да се направи и по следния начин ,
$('#test').get(0).id
, което е равно на document.getElementById('test').id