Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обращение к обектам jQuery - проблема с доступом. (https://javascript.ru/forum/jquery/14953-obrashhenie-k-obektam-jquery-problema-s-dostupom.html)

Anthony 07.02.2011 02:31

Обращение к обектам jQuery - проблема с доступом.
 
Доброго времени суток всем. Возник вопрос, очень расчитываю на подсказку.

Есть такой вот Ul
<ul id='ul'>
    <li id='li1' class='someclass'>li1</li>
    <li id='li2' class='someclass'>li2</li>
    <li id='li3' class='someclass'>li3</li>
</ul>

<a href="javascript:" id='add'>add</a>
<a href="javascript:" id="get">get</a>
<script>
    $(document).ready(function(){
            $('#add').click(function(){
                  $('#ul').append('<li id='li4' class='someclass'>li4</li>
            });

           $('#get').click(function(){
                   $('.someclass').each(function(){
                           alert(this.id);
                   });
           });
    });
</script>


Скрипт я схематично написал, у меня аналогичный, смысл тот же, только с инкрементацией при добавлении.

Так вот. Добавим элемент LI и потом вызовем GET.
В результате мы получим алерты только для первых трех элементов. А новые игнорируются.

В общем-то это и понятно. На момент генерации документа новых элементов не было, он их и не видит.

Так вот вопрос: как мне добавить новые элементы в объект jQuery чтобы при вызове each считались все 4 элемента? Я пробовал написать свою функцию, в которой при добавлении переопределялся класс someClass. Но в этом случае в each выводился только новый элемент, а старые в игнор.

SkyLight 08.02.2011 11:05

Во-первых, в 12 строке не закрыт append. Во-вторых, там же не закрыта кавычка. В-третьих, добавляемый li должен быть заключен в двойные кавычки, раз уж для аттрибутов используются одинарные. В-четвертых, все добавляемые элементы имеют один ID. Ну, это так, из основного.


Часовой пояс GMT +3, время: 01:41.