Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Почему событие срабатывает один раз? (https://javascript.ru/forum/jquery/8009-pochemu-sobytie-srabatyvaet-odin-raz.html)

igsavenko 02.03.2010 22:08

Почему событие срабатывает один раз?
 
Здравствуйте. Суть такая, кликаем по картинке, которая сгенерирована при помощи библиотеки GD2, на изображении надпись, надпись зависит от кода который передаем в скрипт.
После клика вызываем следующую функцию:
Данная функция делает запрос на генерацию нового ключа, от которого как раз зависит картинка.
$(document).ready(function() {
	$('#new_code').click(new_code);
	function new_code()
	{
		alert(1);
		//Получить новый код из php скрипта
		$.ajax({
      		url: "gen_pass_ajax.php",
      		global: false,
			type: "POST",
      		beforeSend: function(){
				//тут можно что-нибудь показать пока идет обмен информацией
      			return true;
      		},
      		dataType: "json",
      		success: function (data)
			{
				if(data.success == true)
				{
					$('#code_div').html("<img title='БРРРРРРР' border='0' src='generate_pic_class.php?code="+data.result+"' align='absmiddle' id = 'new_code'></img>").fadeIn();
					return true;
				}
			}
		});
	}
});

В случае успеха изменяем содержимое div в котором расположена картинка, то есть саму картинку. alert(1) поставил специально посмотреть когда срабатывает событие. Первый раз функция отрабатывает отлично, но при втором нажатии ничего не происходит alert(1) не срабатывает, в чем может быть проблема?
И еще вопрос как сделать так чтобы ограничить пользователя в нажатии на изображение, то есть не более 5 раз например! Просто завести глобальный счетчик?

Gvozd 02.03.2010 22:33

вы удаляете старую картинку, и делаете новую
с чего бы срабатывать событию, которое было повешено на уже несуществующий элемент, при клике на новый элемент?

igsavenko 02.03.2010 22:36

почитал документацию и пришел к этой функции:
$("#new_code").live("click", new_code);

Все хорошо работает!

Сразу еще вопрос в до гонку, еще в форме есть input type = 'hidden', как заменить его значение value. Извините за банальные вопросы я просто совсем новичек :) Учусь только :)

subzey 03.03.2010 00:14

элемент.value = "42"
Если в jQ:
$("input[name=моёкакоетоимяэлемента]", элемент_form).val("новое значение")

Gvozd 03.03.2010 00:58

Цитата:

Сообщение от igsavenko
почитал документацию и пришел к этой функции:
$("#new_code").live("click", new_code);
Все хорошо работает!

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

вешайте обработчик события на новосозданный элемент

igsavenko 03.03.2010 06:11

Всем большое спасибо!

e1f 03.03.2010 08:26

Gvozd, с 1.4. Уже не на странице, а в контексте. Но нагрузка все есть, конечно же.


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