Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Скрипт выполняется только 1 раз (https://javascript.ru/forum/events/28695-skript-vypolnyaetsya-tolko-1-raz.html)

tuezov52 30.05.2012 09:44

Скрипт выполняется только 1 раз
 
<body>
<header class="cf">
<div class="logo"><img src="logo.PNG"></div>
<nav>
	<ul>
		<li id="login"><a id="login-trigger"> Все страницы <span>&#x25BC;</span></a>
			<div id="login-content" >
				<form>
					<fieldset id="inputs">
					<table  cellspacing="0" cellpadding="0">
					<tr><td width = "70%"></td><td><input type="text" placeholder="Поиск страниц"></td></tr>
					</table><br>
					
					
                    <table  cellspacing="0" cellpadding="7">
					    <tr class="all-page-selected-row">  
                             <td width="30%"><a class="title_page">Главная</a></td>
					         <td width="30%"><div class="url_page"><a class="invis" href="/index">/index</a></div></td>
					         <td width="30%"></td>
					         <td><a class="page-editing">Изменить</a></td>
					         <td>&nbsp;&nbsp;</td>
				             <td><a class="invis" href="del">Удалить</a></td>
                        </tr>
						
                        <tr class="all-page-selected-row">  
                             <td width="30%"><a class="title_page">Продукция</a></td>
					         <td width="30%"><div class="url_page"><a class="invis" href="/production">/production</a></div></td>
					         <td width="30%"></td>
					         <td><a class="page-editing">Изменить</a></td>
					         <td>&nbsp;&nbsp;</td>
				             <td><a class="invis" href="del">Удалить</a></td>
                        </tr>
					
					</table>



					</fieldset><br><br><br>
				<div id="form_under_line">
					<fieldset id="actions">
                      <table><tr>
					<td width="90%"></td>  
					<td><div id="closed" class="cancel"> Закрыть </div>
                    </table>					
					</fieldset>
				</div>
			</div>                     
		</li>
		

				<li id="login"><a id="login-trigger2"> Свойства страницы<span>&#x25BC;</span></a>
			<div id="login-content2">
             <form method="post">
			  <input type="text" name="title" value="Заголовок">
			  <input type="submit">
			 </form>
			</div>                     
		</li>
		
	</ul>
</nav>
</header>

<div style = "border: 1px solid;"><h1>Тестовый текст</h1></div>
</body>
</html>


<script>
		  
//Функция открытия окна: ВСЕ СТРАНИЦЫ		  
	$(document).ready(function(){
	$('#login-trigger').click(function(){
	$(this).next('#login-content').slideToggle();
	$(this).toggleClass('active');					
	if ($(this).hasClass('active')) $(this).find('span').html('&#x25B2;')
	else $(this).find('span').html('&#x25BC;')
					                    })
		                        });
								
//Функция закрытия окна: ВСЕ СТРАНИЦЫ		  
   $(document).ready(function(){
   $('div .cancel').click(function(){
   $('#login-content').hide();     })
                               });								
		  
//Функция открытия окна: СВОЙСТВА СТРАНИЦЫ		  
    $(document).ready(function(){
    $('#login-trigger2').click(function(){
	$(this).next('#login-content2').slideToggle();
    $(this).toggleClass('active');					
    if ($(this).hasClass('active')) $(this).find('span').html('&#x25B2;')
    else $(this).find('span').html('&#x25BC;') 
	                                     })
							    });
		  
//Функция закрытия окна: СВОЙСТВА СТРАНИЦЫ		  
   $(document).ready(function(){
   $('div .cancel').click(function(){
   $('#login-content2').hide();     })
                               });
		  
		  
//Подсветка параметров ( ССЫЛКА, ИЗМЕНИТЬ, УДАЛИТЬ ) в таблице: ВСЕ СТРАНИЦЫ
   $(document).ready(function(){
   $('.all-page-selected-row').mousemove(function(){
   $(this).css("background","#f2f2f2");
   $(this).find('.invis').css("color","#9b9b9b");
   $(this).find('.page-editing').css("color","#9b9b9b");
   $(this).find('.page-editing').css("border-bottom","1px solid #9b9b9b");
   });
   

                               });  


      $(document).ready(function(){
   $('.all-page-selected-row').mouseout(function(){
   $(this).css("background","#fff");
   $(this).find('.invis ').css("color","#fff");
   $(this).find('.page-editing').css("color","#fff"); 
   $(this).find('.page-editing').css("border-bottom","1px solid #fff");   
                                        })
                               });  							   
							   


							   
      $(document).ready(function(){
	
	var title_page='';
	var url_page='';
	

	$('.all-page-selected-row').mousemove(function SelectRow(){
	
	title_page = $(this).find('.title_page').text();
    url_page = $(this).find('.url_page').text();
	return title_page; 
                                                    });	
																								

    $('.page-editing').click(function PageEditing(){
	 title = title_page;
	 url = url_page; 
        line1='<td width="30%"><input type="text" value="'+title_page+'"></td>';
		line2='<td width="30%"><input type="text" value="'+url_page+'"></td>';
		line3='<td width ="10%"></td><td width="30%"><a class="link-save-page">Сохранить</a></td>';
        line4='<td><a class="link-cancel-page">Отменить</a></td>';
		
		data = line1 + line2 + line3 + line4;
    $(this).closest('tr').html(data);	
	

//Вот тут начинается проблема. Если "$('.link-cancel-page')" не внутри
//функции $('.page-editing').click(function PageEditing(), то при нажатии
//ничего не происходит. Если внутри, то только 1 раз.
//Как избежать проблемы?

	
	$('.link-cancel-page').click(function(){

	    back1 = '<td width="30%"><a class="title_page">'+title+'</a></td>';
	    back2 = '<td width="30%"><div class="url_page"><a class="invis" href="'+url+'">'+url+'</a></div></td>';
        back3 = '<td width="30%"></td><td><a class="page-editing">Изменить</a></td><td>&nbsp;&nbsp;</td><td><a class="invis" href="del">Удалить</a></td>';
 	    
		back = back1 + back2 + back3;
	$(this).closest('tr').html(back);
                                           });	
											
											
	
	                                              });
										   										 								      							       
	                                 });  
									 
							   
	</script>

tuezov52 30.05.2012 10:55

Есть кто на форуме?

Gvozd 30.05.2012 11:36

Цитата:

Сообщение от tuezov52
Есть кто на форуме?

Нету никого
Сократите ваш код до минимального нерабочего, показывающего вашу проблему, и тогда вам возможно помогут.
Разбираться в вашей простыне кода навряд ли кто-то станет.

PS Если в теме прошло менее суток с момента последнего сообщения, то незачем ее АП-ать. Здесь вам не личная армия, которая по первому вашему зову должна кидаться решать ваши проблемы.
Если хотите особого к себе отношения, и быстрого решения ваших проблем, можете подать заявку на платную консультацию в разделе "Работа"

tuezov52 30.05.2012 12:28

Я выложил весь код и указал в комментарии где проблема. Если тут нет людей способных понять в чем ошибка, зачем форум? Если разговор идет о платных услугах, тогда зачем мне консультация? Пожалуйста почту для тех задания и стоимость работ.

tuezov52 30.05.2012 12:35

"PS Если в теме прошло менее суток с момента последнего сообщения, то незачем ее АП-ать. Здесь вам не личная армия, которая по первому вашему зову должна кидаться решать ваши проблемы." - Вы сразу настраиваете на соответствующее отношение своим тоном.

Gvozd 30.05.2012 12:48

Цитата:

Сообщение от tuezov52
зачем форум?

http://phpclub.ru/faq/WhyForum

Kolyaj 30.05.2012 12:57

tuezov52,
вы правда думаете, что форум для того, чтобы выискивать ошибки в портянках чужих скриптов? Что-то вроде "чо та лень мне дебажить, пойду на форуме выложу, пусть другие подебажат".

tuezov52 30.05.2012 13:02

Вопрос не в том, что лень. Я уже пробовал кучу вариантов и смотрел похожие ошибки. Не нашел ответа и решил спросить у тех кто хорошо знает JS/JQ. Я не прошу поправить скрипт. Натолкните на мысль, что я делаю не так. Не факт, что ошибка вообще в этом месте. МБ я вообще ерунду пишу.

Deff 31.05.2012 11:55

tuezov52,
Попробуйте так
<script>
		  
//Функция открытия окна: ВСЕ СТРАНИЦЫ		  
	$(document).ready(function(){
	$('#login-trigger').click(function(){
	$(this).next('#login-content').slideToggle();
	$(this).toggleClass('active');					
	if ($(this).hasClass('active')) $(this).find('span').html('&#x25B2;')
	else $(this).find('span').html('&#x25BC;')
					                    })
		                        });
								
//Функция закрытия окна: ВСЕ СТРАНИЦЫ		  
   $(document).ready(function(){
   $('div .cancel').click(function(){
   $('#login-content').hide();     })
                               });								
		  
//Функция открытия окна: СВОЙСТВА СТРАНИЦЫ		  
    $(document).ready(function(){
    $('#login-trigger2').click(function(){
	$(this).next('#login-content2').slideToggle();
    $(this).toggleClass('active');					
    if ($(this).hasClass('active')) $(this).find('span').html('&#x25B2;')
    else $(this).find('span').html('&#x25BC;') 
	                                     })
							    });
		  
//Функция закрытия окна: СВОЙСТВА СТРАНИЦЫ		  
   $(document).ready(function(){
   $('div .cancel').click(function(){
   $('#login-content2').hide();     })
                               });
		  
		  
//Подсветка параметров ( ССЫЛКА, ИЗМЕНИТЬ, УДАЛИТЬ ) в таблице: ВСЕ СТРАНИЦЫ
   $(document).ready(function(){
   $('.all-page-selected-row').mousemove(function(){
   $(this).css("background","#f2f2f2");
   $(this).find('.invis').css("color","#9b9b9b");
   $(this).find('.page-editing').css("color","#9b9b9b");
   $(this).find('.page-editing').css("border-bottom","1px solid #9b9b9b");
   });
   

                               });  


      $(document).ready(function(){
   $('.all-page-selected-row').mouseout(function(){
   $(this).css("background","#fff");
   $(this).find('.invis ').css("color","#fff");
   $(this).find('.page-editing').css("color","#fff"); 
   $(this).find('.page-editing').css("border-bottom","1px solid #fff");   
                                        })
                               });  							   
							   


							   
      $(document).ready(function(){
	
	var title_page='';
	var url_page='';
	

	$('.all-page-selected-row').mousemove(function SelectRow(){
	
	title_page = $(this).find('.title_page').text();
    url_page = $(this).find('.url_page').text();
	return title_page; 
                                                    });	
																								

    $('.page-editing').live("click", function(){
	 title = title_page;
	 url = url_page; 
        line1='<td width="30%"><input type="text" value="'+title_page+'"></td>';
		line2='<td width="30%"><input type="text" value="'+url_page+'"></td>';
		line3='<td width ="10%"></td><td width="30%"><a class="link-save-page">Сохранить</a></td>';
        line4='<td><a class="link-cancel-page">Отменить</a></td>';
		
		data = line1 + line2 + line3 + line4;
    $(this).closest('tr').html(data);	
	

//Вот тут начинается проблема. Если "$('.link-cancel-page')" не внутри
//функции $('.page-editing').click(function PageEditing(), то при нажатии
//ничего не происходит. Если внутри, то только 1 раз.
//Как избежать проблемы?

	
	$('.link-cancel-page').one("click", function(){

	    back1 = '<td width="30%"><a class="title_page">'+title+'</a></td>';
	    back2 = '<td width="30%"><div class="url_page"><a class="invis" href="'+url+'">'+url+'</a></div></td>';
        back3 = '<td width="30%"></td><td><a class="page-editing">Изменить</a></td><td>&nbsp;&nbsp;</td><td><a class="invis" href="del">Удалить</a></td>';
 	    
		back = back1 + back2 + back3;
	$(this).closest('tr').html(back);
                                           });	
											
											
	
	                                              });
										   										 								      							       
	                                 });  
									 
							   
	</script>

Deff 31.05.2012 12:03

Имхо для Вашей структуры Правильнее было б навешивать обработчики onclick="Функция" непосредственно в элементе контента

Тогда б и скрипт короче и было б только описание функций и процессы изменения контента

А так - куча навешанных событий хитросплетенных с ченчем


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