В HTML id
относится к уникальному идентификатору . Другими словами, использование двух элементов с одинаковым id
противоречит стандартам. jQuery здесь ведет себя правильно.
Используйте class
вместо id
, чтобы идентифицировать ваши теги как таковые:
HTML:
<ul id="sortable" class="ui-sortable">
<li class="sortable" id="listItem_1">
<a class="edit" href="#">edit</a>
<span id="title">List item 1</span>
</li>
<li class="sortable" id="listItem_2">
<a class="edit" href="#">edit</a>
<span id="title">List item 2</span>
</li>
etc..
</ul>
JavaScript:
$(document).ready(function() {
$('a.edit').click(function(){
alert($(this).parent("li").attr("id"));
})
});
В качестве альтернативы, так как родительский тег уже, кажется, имеет уникальный класс, вы можете просто использовать его для определения целевых тегов. Это уменьшит то, что я называю «шумом класса» (определение бесполезного класса для целевого элемента, на который могут быть нацелены уникальные атрибуты их родителя).
HTML:
<ul id="sortable" class="ui-sortable">
<li class="sortable" id="listItem_1">
<a href="#">edit</a>
<span id="title">List item 1</span>
</li>
<li class="sortable" id="listItem_2">
<a href="#">edit</a>
<span id="title">List item 2</span>
</li>
etc..
</ul>
JavaScript:
$(document).ready(function() {
$("li.sortable a:contains('edit')").click(function(){
alert($(this).parent("li").attr("id"));
})
});