Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает код при добавление новых элементов (https://javascript.ru/forum/jquery/17266-ne-rabotaet-kod-pri-dobavlenie-novykh-ehlementov.html)

dima85 12.05.2011 16:31

Не работает код при добавление новых элементов
 
Есть такой код:
<script type="text/javascript">
      $(document).ready(function() {
        $('a[rel*=facebox].facebox();
      });
    </script>

Он замечательно работает, все Ок.

Но когда я добавляю новые ссылки на страницу он отказывается их обратабывать.

Добавляю таким образом:
$("<li><\/li>").appendTo("#images").html("<a rel=\"facebox\" href=\"images.jpg\">images<\/a>");


Подскажите что делать?

0931454574 12.05.2011 16:47

Как вариант вешать напрямую на вновь добавленные элементы нужное событие.
например
<a href="#" onClick(HelloFunction())>Hello</a>

тоесть запускать будет нужную функцию.
Как минимум, а вообще не работает почему сказать не могу , надо пробовать, если вариант 1 не подойдет.

dima85 12.05.2011 16:51

Может еще есть какие-то варианты?

0931454574 12.05.2011 17:07

а что если попробовать так.
После добавления нового элемента запускать функцию поиска всех ссылок с нужным параметрами , заодно сразу посмотришь отлавливается ли вновьдобавленная.
Так думаю будет ок.

Короче ("<li><\/li>").appendTo("#images").html("<a rel=\"facebox\" href=\"images.jpg\">images<\/a>");
сделала

А ПОТОМ выбираешь все ссылки со своим релом и в each() перезаписываешь обработчик)

Но я не знаю чем неугоден вариант 1

0931454574 12.05.2011 17:45

Как я мог забыть.
Нужно при создании использовать live();

Вот пример

$('#clicker').live("click", function(){
      И здесь то что будет обработчиком  на имеющиеся и добавленные элементы
    });


Пожалуйста отпишитесь с результатом

walik 12.05.2011 22:15

Цитата:

Сообщение от dima85
Но когда я добавляю новые ссылки на страницу он отказывается их обратабывать.

Правильно, когда вы вешали событие, этих ссылок еще не было. При добавление ссылок на страницу, им тоже вешайте событие.

dima85 12.05.2011 23:05

0931454574, к сожалению не понял ваш пример.
walik, как вешать такое событие?

walik 12.05.2011 23:21

$("<li></li>").appendTo("#images").html('<a rel="facebox" href="images.jpg">images</a>').find('a').facebox();

dima85 13.05.2011 09:57

Спасибо.

0931454574 13.05.2011 12:16

dima85,

Для всех тегов <a> будет обработчик на событие клик, при добавление новых <a>
они тоже будут получать обработчик.

Здесь выбирает <a> с классом GURU , но Вы можете по чем угодно выбрать.
$('a.GURU').live('click', function(){
    (this).facebox();
   });



И все будет работать.


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