$(document).ready(function() { $(".ch .a").click( function() { $("#Pr").animate({opacity: 'show'}, "slow", "easein"); index = $(".ch a").index(this); val_zak=$(this).parent().parent().parent().parent().find("table").attr("id"); }); $(".div_add a").click( function() { var addzak=$(this).parent().parent().parent().parent().find("table").attr("id"); if(addzak=="tab1"){ var numb=$("#tab1 tr").length; var str='<tr id="tr"><td>'+numb+'.</td>' str+='<td width="4%" class="close" onclick="clos(this);"><img src="close.gif" width="14" height="14"></td>'; str+='<td class="ch" style="text-align:left;"><a>Выберите товар ...</a></td>'; str+='<td><input type="text" name="shl"></td>'; str+='<td><input type="text" name="dll"></td>'; str+='<td><input type="text" name="kol"></td>'; str+='<td><input name="metr" value="0"> руб.</td>'; str+='<td><span class="summ">0 руб.</span></td></tr>'; var add=$(str); add.appendTo("#"+addzak); //Как вы и сказали добавить еще раз обработчик чтобы у элемента заработал click $(".ch .a").click( function() { $("#Pr").animate({opacity: 'show'}, "slow", "easein"); index = $(".ch a").index(this); val_zak=$(this).parent().parent().parent().parent().find("table").attr("id"); }); }); }); |
Есть очень хороший плагин listen.
Как раз для этих целей. |
А без этого незя еще 20 кб лишние
|
не 20, а 2.5кб запакованный.
Можно то и без него, но это будет универсально, и гораздо облегчает работу, тем более я не думаю, такая ситуация возникнет один раз. Это одно средство на многие случаи жизни. И не нужно будет изобретать велосипед, сомневаюсь что можно будет написать лучше. Зачем лишние грабли?? |
BlackAngels,
А, я понял проблему. У вас по клику добавляется обработчик на все элементы еще раз. Что-то я зашел в тупик. :) Первый $(".ch .a").click можно удалить - по нему этому селектору элементов все-равно на тот момент не будет. Кстати, почему ".a", если у вас просто тег? Разве не .ch a? |
BlackAngels,
В общем вы можете выкрутиться вот так: $(document).ready(function() { $(".div_add a").click( function() { var addzak=$(this).parent().parent().parent().parent().find("table").attr("id"); if(addzak=="tab1"){ var numb=$("#tab1 tr").length; var str='<tr id="tr"><td>'+numb+'.</td>' str+='<td width="4%" class="close" onclick="clos(this);"><img src="close.gif" width="14" height="14"></td>'; str+='<td class="ch" style="text-align:left;"><a>Выберите товар ...</a></td>'; str+='<td><input type="text" name="shl"></td>'; str+='<td><input type="text" name="dll"></td>'; str+='<td><input type="text" name="kol"></td>'; str+='<td><input name="metr" value="0"> руб.</td>'; str+='<td><span class="summ">0 руб.</span></td></tr>'; var add=$(str); add.appendTo("#"+addzak); $(".ch a").each(function() { this.onclick = function() { $("#Pr").animate({opacity: 'show'}, "slow", "easein"); index = $(".ch a").index(this); val_zak=$(this).parent().parent().parent().parent().find("table").attr("id"); } }); }); }); |
Есть такая библиотека livequery. Используется как раз для установки на динамически созданные элементы обработчиков.
|
Цитата:
но прикрутить не смог, к моему примему так как пока это слишком сложно для новечка (((( |
Цитата:
|
Часовой пояс GMT +3, время: 10:50. |