| 
	| 
	
	| 
		
	| 
			
			 
			
				12.01.2017, 10:58
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 12.01.2017 
						Сообщений: 5
					 
		
 |  |  
	| 
				не работает onclick для добавляемого элемента
			 Доброго всем дня. 
Есть div контейнер #send-review который запускается в окне fancybox всё здорово отрабатывает при нажатии на кнопку появляется всплывающее окно. Так вот на появившемся диве #send-review есть кнопка #button-send-review. При нажатии на эту кнопку должен срабатывать onclick(), но он не срабатывает. Погуглив и немного почитав понял что нужно использовать делигированые события, но почему то оно всё равно не отрабатывает.Пытаюсь прикрепить событие к существующему блоку #content-block в котором всё это находится, получается как то так:
 
$('#content-block').on('click', '#button-send-review', function(){
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 11:11
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| svikator,либо '#content-block' тоже добавляется либо какое-то id не уникально
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 11:43
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 12.01.2017 
						Сообщений: 5
					 
		
 |  |  
	| Да действительно content-block добавлялся, переназначил на другой блок заработало. Возник ещё 1 вопрос, чтобы не плодить темы напишу сюда. У меня в этом блоке #send-review кроме срабатывающей кнопки есть инпуты, которые должны изменяться при нажатии.Они изменяются< только при повторном запуске окна #send-review. Как сделать чтобы они изменялись срузу же при нажатии. 
Вот так не работает:
 
$("#name_review").css("borderColor","#FDB6B6");
и так тоже:
var name_review=document.getElementById('name_review');
			name_review.style.borderColor = '#FDB6B6';
То есть работают, но только при перезапуске. |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 11:56
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| svikator,делайте минимальный макет иначе ничего не понятно
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 12:45
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 12.01.2017 
						Сообщений: 5
					 
		
 |  |  
	| Это содержимое которое добавляется через fancybox: 
<div id="send-review">
    
		<p align="right" id="title-review">Отзыв появиться после проверки администрацией</p>
		
		<ul>
		<li><p align="right"><label id="label-name" >Имя<span>*</span></label><input maxlength="15" type="text"  id="name_review" /></p></li>
		<li><p align="right"><label id="label-good" >Плюсы<span>*</span></label><textarea id="good_review" ></textarea></p></li>    
		<li><p align="right"><label id="label-bad" >Минусы<span>*</span></label><textarea id="bad_review" ></textarea></p></li>     
		<li><p align="right"><label id="label-comment" >Комментарий</label><textarea id="comment_review" ></textarea></p></li>  
		<p align="right" id="button-send-review" iid="'.$id.'" >Отправить</p>
			
		</ul>
		
		
    </div>
Затем идёт js который обрабатывает нажатие на динамически добавленую кнопку и нужно чтобы работал на динамически добавленые инпуты:
 
$('body').on('click', '#button-send-review', function(e){ 
                 
   var name = $("#name_review").val();
   var good = $("#good_review").val();
   var bad = $("#bad_review").val();
   var comment = $("#comment_review").val();
   var iid = $("#button-send-review").attr("iid");
 
    if (name != "")
     {
          name_review = '1';
          $("#name_review").css("borderColor","#DBDBDB");
		  
      }else {
           name_review = '0';
           $("#name_review").css("borderColor","#FDB6B6");
      }
                   
    if (good != "")
       {
          good_review = '1';
          $("#good_review").css("borderColor","#DBDBDB");
      }else {
          good_review = '0';
          $("#good_review").css("borderColor","#FDB6B6");
      }
             
    if (bad != "")
     {
          bad_review = '1';
          $("#bad_review").css("borderColor","#DBDBDB");
     }else {
          bad_review = '0';
          $("#bad_review").css("borderColor","#FDB6B6");
     } 
                                          
             
            // Глобальная проверка и отправка отзыва
             
    if ( name_review == '1' && good_review == '1' && bad_review == '1')
      {
         $("#button-send-review").hide();
         $(".auth-loading").show();
                   
      $.ajax({
         type: "POST",
         url: "/include/add_review.php",
         data: "id="+iid+"&name="+name+"&good="+good+"&bad="+bad+"&comment="+comment,
         dataType: "html",
         cache: false,
         success: function() {
         setTimeout("$.fancybox.close()", 1000);
         }
         });  
         }         
});
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 12:52
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| svikator, пробуйте
  
$(function() {
$('body').on('click', '#button-send-review', function(e){
   var parent = $(this).parents('#send-review');
   var name = $("#name_review",parent).val();
   var good = $("#good_review",parent).val();
   var bad = $("#bad_review",parent).val();
   var comment = $("#comment_review",parent).val();
   var iid = $("#button-send-review",parent).attr("iid");
    if (name != "")
     {
          name_review = '1';
          $("#name_review",parent).css("borderColor","#DBDBDB");
      }else {
           name_review = '0';
           $("#name_review",parent).css("borderColor","#FDB6B6");
      }
    if (good != "")
       {
          good_review = '1';
          $("#good_review",parent).css("borderColor","#DBDBDB");
      }else {
          good_review = '0';
          $("#good_review",parent).css("borderColor","#FDB6B6");
      }
    if (bad != "")
     {
          bad_review = '1';
          $("#bad_review",parent).css("borderColor","#DBDBDB");
     }else {
          bad_review = '0';
          $("#bad_review",parent).css("borderColor","#FDB6B6");
     }
            // Глобальная проверка и отправка отзыва
    if ( name_review == '1' && good_review == '1' && bad_review == '1')
      {
         $("#button-send-review",parent).hide();
         $(".auth-loading").show();
      $.ajax({
         type: "POST",
         url: "/include/add_review.php",
         data: "id="+iid+"&name="+name+"&good="+good+"&bad="+bad+"&comment="+comment,
         dataType: "html",
         cache: false,
         success: function() {
         setTimeout("$.fancybox.close()", 1000);
         }
         });
         }
});
});
 
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 15:58
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 12.01.2017 
						Сообщений: 5
					 
		
 |  |  
	| Попробовал, теперь событие отрабатывает, уже что то...Но теперь в аяксе ругается на строку  
setTimeout("$.fancybox.close()", 1000);
Uncaught ReferenceError: fancybox is not defined 
    at <anonymous>:1:1 
Так тоже не работает:
 
parent.fancybox.close()
 
Инпуты по прежнему не изменяются.			 Последний раз редактировалось svikator, 12.01.2017 в 16:06.
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 16:20
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| svikator, 
 а не строкой пробовали? 
	
 
	| Сообщение от svikator |  
	| "$.fancybox.close()", |  
	
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 16:56
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 12.01.2017 
						Сообщений: 5
					 
		
 |  |  
	| Пробовал ошибка: 
Uncaught TypeError: Cannot read property 'close' of undefined 
    at HTMLParagraphElement.<anonymous> (shop-script.js:945) 
    at HTMLBodyElement.dispatch (jquery-1.8.2.min.js:3) 
    at HTMLBodyElement.h (jquery-1.8.2.min.js:3)
 
И ещё обратил внимание что в строках:
 
var name = $("#name_review",parent).val();
   var good = $("#good_review",parent).val();
   var bad = $("#bad_review",parent).val();
   var comment = $("#comment_review",parent).val();
Не присваиваются значения переменных. Если пройтись отладчиком то у них тип undefined 
Естественно перед отправкой значения заполняю.			 Последний раз редактировалось svikator, 12.01.2017 в 17:02.
 |  |  
	| 
		
	| 
			
			 
			
				12.01.2017, 17:35
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| svikator, 
 без макета к телепатам ... возможно у вас несколько jquery, возможно у вас уже нет $, возможно вам нужен новый fancybox |  |  |  |