Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 22.08.2008, 16:28
Интересующийся
Отправить личное сообщение для BlackAngels Посмотреть профиль Найти все сообщения от BlackAngels
 
Регистрация: 20.08.2008
Сообщений: 12

$(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");			
		});				
				});


});
Ответить с цитированием
  #22 (permalink)  
Старый 22.08.2008, 16:32
Новичок на форуме
Отправить личное сообщение для ignar Посмотреть профиль Найти все сообщения от ignar
 
Регистрация: 22.08.2008
Сообщений: 6

Есть очень хороший плагин listen.
Как раз для этих целей.
Ответить с цитированием
  #23 (permalink)  
Старый 22.08.2008, 16:34
Интересующийся
Отправить личное сообщение для BlackAngels Посмотреть профиль Найти все сообщения от BlackAngels
 
Регистрация: 20.08.2008
Сообщений: 12

А без этого незя еще 20 кб лишние
Ответить с цитированием
  #24 (permalink)  
Старый 22.08.2008, 17:09
Новичок на форуме
Отправить личное сообщение для ignar Посмотреть профиль Найти все сообщения от ignar
 
Регистрация: 22.08.2008
Сообщений: 6

не 20, а 2.5кб запакованный.

Можно то и без него, но это будет универсально, и гораздо облегчает работу, тем более я не думаю, такая ситуация возникнет один раз.
Это одно средство на многие случаи жизни. И не нужно будет изобретать велосипед, сомневаюсь что можно будет написать лучше.
Зачем лишние грабли??
Ответить с цитированием
  #25 (permalink)  
Старый 22.08.2008, 18:36
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

BlackAngels,
А, я понял проблему. У вас по клику добавляется обработчик на все элементы еще раз. Что-то я зашел в тупик.
Первый $(".ch .a").click можно удалить - по нему этому селектору элементов все-равно на тот момент не будет. Кстати, почему ".a", если у вас просто тег? Разве не .ch a?

Последний раз редактировалось Андрей Параничев, 22.08.2008 в 18:44.
Ответить с цитированием
  #26 (permalink)  
Старый 22.08.2008, 18:58
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

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");            
                  }
            });                
        });
});
Ответить с цитированием
  #27 (permalink)  
Старый 09.01.2009, 19:32
Новичок на форуме
Отправить личное сообщение для Deexus Посмотреть профиль Найти все сообщения от Deexus
 
Регистрация: 05.01.2009
Сообщений: 3

Есть такая библиотека livequery. Используется как раз для установки на динамически созданные элементы обработчиков.
Ответить с цитированием
  #28 (permalink)  
Старый 15.02.2017, 14:26
Интересующийся
Отправить личное сообщение для Saratov64 Посмотреть профиль Найти все сообщения от Saratov64
 
Регистрация: 17.03.2016
Сообщений: 22

Сообщение от Deexus Посмотреть сообщение
Есть такая библиотека livequery. Используется как раз для установки на динамически созданные элементы обработчиков.
Скачал jquery.livequery

но прикрутить не смог, к моему примему так как пока это слишком сложно для новечка ((((
Ответить с цитированием
  #29 (permalink)  
Старый 15.02.2017, 14:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,000

Сообщение от Saratov64
Скачал jquery.livequery
не надо качать старьё, jquery есть всё для делегирования из коробки.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск