$(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, время: 15:21. |