Не обрабатывает события на элементах которые он сам создал
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <title>BAG</title> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="/_nexus/admin/style.css" /> <script type="text/javascript" language="javascript" src="/_nexus/system/jquery/jquery-1.3.2.js"></script> </head> <body> <script type="text/javascript" language="javascript"> $(document).ready(function() { var i = 0; $('a').click(function() { $('div').append('<br />'); $('div').append('<a></a>') $('div').children('a:empty').attr({href:'test'+i+'.php'}).html('Тест '+i); i++; return false; }); }); </script> <div> <a href="test.php">Тест</a> </div> </body> </html> |
Так вот, попробуйте запустить этот скрипт, и увидите что, когда вы кликнули на ссылке "Тест" - появится еще ссылка "Тест 1".
А вот когда кликните по ссылке "Тест 1" то $('a').click(function()... не сработает. почему? может нужно как то какой нибудь неизвестной мне функцией обновлять считанный библиотекой dom ? |
А почему должно сработать? Когда вешали обработчик, про Ваши новые ашки никто ни сном ни духом -- их же нет. Тут два варианта: либо с использование live:
$('a').live('click', function(){ $('<a></a>').appendTo($('div').append('<br />')) .attr({href:'test'+i+'.php'}) .html('Тест '+i); i++; return false; }); Либо навешивать событие после создания новой ссылки: $('a').click(append_a); function append_a() { $('<a></a>').appendTo($(this).parent('div').append('<br />')) .attr({href:'test'+i+'.php'}) .html('Тест '+i) .click(append_a); i++; return false } |
Часовой пояс GMT +3, время: 07:04. |