Я не очень знаком с js и jquery, и у меня проблема с динамически добавляемыми элементами.
Я программирую MP3-плеер js, и я получаю плейлист типа "m3u" с сервера
#dir
#dir/artist
#dir/artist/album
dir/artist/album/song.mp3
// [...]
код js вставляет его в ol:
<div data-id="container">
<ol data-id="list">
<li>dir</li>
<li>artist</li>
<li>album</li>
<li><a href="https://localhost/[...]/dir/artist/album/song.mp3" id="title-1">song</a></li>
<!-- [...] -->
</ol>
</div>
это работает:
$('[data-id=container]').on('click', '[data-id=list] li > a', function(e) {
/*[...] */
}); // set audio src, ...
e.target - элемент, на который я нажал
если я хочу получить к нему доступ по его идентификатору в файле js , он возвращает неопределенное значение:
console.log($('#title-1'));
возвращается:
w.fn.init {}
__proto__: Object(0)
если я наберу $ ('# title-1') в консоли chrome dev , я получу объект:
w.fn.init [a#title-1]
0: a#title-1
length: 1
__proto__: Object(0)
Вот код, как я создал список:
function list(file) {
$.get(file, function(list) {
var list = list.split('\n'); //seperate file by lines
var empty_line = 0;
if (list[list.length - 1] == '') { empty_line = 1; } //ignore last line
var j = 1; //counter for #title-n
var text = ''; //output
for (i = 0; i < (list.length - empty_line); i++) {
var li = list[i].split('/');
if (list[i][0] == '#') {
text += tabs + '<li style="padding-left:' + (li.length - 1) * 10 + 'px;">' + li.pop().replace('#', '') + '</li>\n';
} else {
text += tabs + '<li style="padding-left:' + (li.length - 1) * 10 + 'px;"><a href="' + server_get_title + list[i] + '" id="title-' + j + '">' + li.pop() + '</a></li>\n';
j++;
}
}
$('[data-id=list]').html(text);
}, 'text');
}
Я прочитал кое-что о добавлении элементов "правильным образом", поэтому я попытался
$('[data-id=list]').append($('<li><!-- [...] --></li>'));
или
obj[i] = $('<li><!-- [...] --></li>');
$('[data-id=list]').append(obj[i]);
и доступ к элементу по
obj[1].attr('href');
но безуспешно.
Есть идеи как ее решить?
Спасибо
EDIT
мой вопрос не о примере "e", я хочу получить доступ к элементу, не щелкая по нему и не получая e.target таким образом.