Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   проблема со скриптом (https://javascript.ru/forum/events/22642-problema-so-skriptom.html)

m2broth 27.10.2011 13:40

проблема со скриптом
 
Имеется следующий код javascript
window.addEvent('domready', function() {
	$$('.performer').each( function(el) {
		var queueDeveloper = 'performer';
		if(typeof _queueDeveloper != 'undefined')
		{
			var queueDeveloper = _queueDeveloper;
		}
		$(el).addEvent('click', function() {
		
			var selectPerformer = '';
			if(typeof _performers != 'undefined' && typeof _performers[queueDeveloper] != 'undefined')
			{
				var selectedValue = this.get('html');
				var id = this.get('rel');
				var selected = '';
				$each(_performers[queueDeveloper], function(el, id) {
					var selected = '';
					if(el == selectedValue)
					{
						selected = ' selected="selected"';
					}
					selectPerformer += '<option value="'+ id + '"'+selected+'>' + el + '</option>';
				});
			}
			if(selectPerformer)
			{
				var select = '<select name="performers['+id+']"><option value=""></option>'+selectPerformer+'</select> <input class="button" value="Save" />';
				this.set('html', select);
				
				$$(".button").each(function(el){
				el.addEvent('click', function(){
					new Request({
					method : 'POST',
					url : window.location+'/',
					data : 'id=' +el.getParent('td').get('rel')+'&user_id='+el.getParent('td').getElement('select').get("value"),
					onSuccess: function(message){
					if(message != "ok")
					{
						alert(message);
						return true;
					}
					else
					{
						el.getParent('td').getParent('tr').addClass("hidden");
						return true;
						
					}
					}
					}).send();
					return true;
					
				});
				
				});
				this.removeEvents();
			}
			
		});
	});

При клинке на кнопку с классом ".button" событие происходит n раз (это при том что на странице находится n кнопок с классом .button). В чем может быть проблема

ksa 27.10.2011 14:03

Цитата:

Сообщение от m2broth
В чем может быть проблема

Точно ответить на это поможет полный тестовый пример.
Ты просто прописал N обработчиков... Вот они N раз и отрабатывают.

m2broth 27.10.2011 14:08

а как сделать так чтобы один раз обрабатывать?

ksa 27.10.2011 14:14

Цитата:

Сообщение от m2broth
а как сделать так чтобы один раз обрабатывать?

Таки один раз и прописать... :)

m2broth 27.10.2011 14:18

как в этом случае один обработчик прописать?

ksa 27.10.2011 14:29

Цитата:

Сообщение от m2broth
как в этом случае

Я даже не в курсе что у тебя за случай... :) Все, что я вижу, так это какой-то огрызок, что ты тут выложил...

Но обработчик запускается N раз только если его N раз прописали элементу...


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