Проблема JQuery с attr()
Вот короткий фрагмент HTML (он содержит все соответствующие HTML и javascript-коды):
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$('.remove-temporary-photo').click(function() {
var url = '/my-account/remove-media/id/' + $(this).attr('id');
$.get(url, function(data) {
//
});
var id;
id = $('ul.inl').attr('id');
alert(id);
//$.get('/my-account/temporary-album-photos/id/' + id, function(data) {
// $('#temporaryPhotos').html(data);
//});
});
}); //]]>
</script>
<ul class="inl" id="4">
<li>
<a href="#53" class="img"><img src="/uploads/photos-thumbs/53.jpg" alt="Public Photo #53" /></a>
<p class="options">
<input type="text" name="title53" id="53" value="Title..." class="title" style="width: 81px; margin-top: 5px; border: 0;" />
<a href="#53" class="blue remove-temporary-photo" id="53">remove</a>
</p>
</li>
</ul>
<div class="clear"> </div>
Обратите внимание на эту строку:
alert(id);
Я получаю пустое всплывающее окно. Не должен ли id быть равным 4? Я этого не понимаю. Причина этого в том, что мне нужен идентификатор для следующих трех/четырех строк кода, которые теперь прокомментированы.
EDIT:
Теперь я использую допустимые идентификаторы, но оповещения по-прежнему пусты:
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$('.remove-temporary-photo').click(function() {
var id = $(this).attr('id');
id = id.substr(2);
alert(id);
//var url = '/my-account/remove-media/id/' + id;
//$.get(url, function(data) {
//
//});
id = $('.inl:first').attr('id');
id = id.substr(2);
alert(id);
//$.get('/my-account/temporary-album-photos/id/' + id, function(data) {
// $('#temporaryPhotos').html(data);
//});
});
}); //]]>
</script>
<?php if (count($this->photos) > 0): ?>
<ul class="inl" id="id<?php echo $this->escape($this->a->id); ?>">
<?php foreach ($this->photos as $p): ?>
<li>
<a href="#id<?php echo $this->escape($p->id); ?>" class="img"><img src="/<?php echo $this->escape($p->thumb_path); ?>" alt="<?php echo $this->escape($p->title); ?>" /></a>
<p class="options">
<input type="text" name="title<?php echo $this->escape($p->id); ?>" id="id<?php echo $this->escape($p->id); ?>" value="Title..." class="title" style="width: 81px; margin-top: 5px; border: 0;" />
<a href="#id<?php echo $this->escape($p->id); ?>" class="blue remove-temporary-photo" id="<?php echo $this->escape($p->id); ?>">remove</a>
</p>
</li>
<?php endforeach; ?>
</ul>
<div class="clear"> </div>
<?php endif; ?>
Ответы
Ответ 1
Ваши идентификаторы недействительны - им не разрешено начинать с цифр.
Согласно HTML 4 spec:
Идентификаторы ID и NAME должны начинаться с буквы ([A-Za-z]), за которой может следовать любое количество букв, цифр ([0-9]), дефис ( "-" ), подчеркивание ( "_" ), двоеточие ( ":" ) и периоды ( "." ).