Показать сообщение отдельно
  #1 (permalink)  
Старый 13.08.2013, 23:08
Аспирант
Отправить личное сообщение для bartonom Посмотреть профиль Найти все сообщения от bartonom
 
Регистрация: 05.05.2011
Сообщений: 48

Клик по ссылке с заданным классом не срабатывает
Задача сохранить по клику на ссылку пользователя в список просмотра в БД.
Проблема в том, что переопределение класса ссылки с 'no_list' на 'in_list' не приводит к ожидаемому результату.
В общем, ссылка класс in_list получает, но все равно срабатывает при клике по ней обработчик
$('a.no_list').click(function() {...
, а должен бы срабатывать
$('a.in_list').click(function() {..
и соответственно уходить по вставляемой ссылке к файлу со списком просмотра.
Прошу помочь, кто знает в чем проблема.
Ниже четыре файла index.php. addWatch.php, watch.js и style.css.

Файл index.php
<?php header('Content-type: text/html; charset=utf-8');    ?>
<html>
<head>
 <link href="style.css" rel="stylesheet" type="text/css" />
 <script type="text/javascript" src="jquery-1.6.2.min.js"></script> 
 <script type="text/javascript" src="watch.js"></script>   
</head>

<body>
 <?php 
 $w_user = array('Иванов','Андреев','Карпов');
 $re_user = array(0,1,0);            // для примера исходно в списке просмотра пользователь Андрееа
 $id_user = array(2,1,4);            // идентификаторы пользователей
 $log_user_id =187;          
 
 for ($i = 0; $i < 3; $i++) {  #3 
    echo "
	 <div class='card'> 
      <div class='fr'>";                            
         if ($id_user[$i]==$re_user[$i]) {          // если данный пользователь уже есть в списке просмотра
		   $existWatch = "in_list";                 // класс ссылки для него
		   $strTitle="К списку выбранных ";
		   $link = '/watchList.php';        
		 } else {                                   // иначе  - пользователя нет в списке просмотра
		   $existWatch = "no_list"; 
		   $strTitle="Сохранить ";		
		   $link = '#';		   
		 }
       
	      echo $w_user[$i]."
		      <a class='".$existWatch."' id='". $id_user[$i]."' rel='". $w_user[$i]."' href='".$link."'>
			    <span id='". $id_user[$i]."' >".$strTitle."</span>
			  </a>
      </div>
     </div>";
 } ?>    <!-- end #3 -->
</body>
</html>


Файл addWatch.php
<?php 
 $user = $_POST['id_user'];       // поле id добавляемого пользователя
//=============================================
//   Здесь код вставки добавляемого пользователя в БД
//=============================================
echo true;
?>


Файл watch.js
$(document).ready(function(){

$('.card').hover (
 function(){
  $(this).find('.fr').find('a.no_list').removeClass('no_list').addClass('show')   // делаем видимой ссылку 
 },
 function(){
  $(this).find('.fr').find('a.show').removeClass('show').addClass('no_list')   // делаем невидимой ссылку 
});

$('a.in_list').click(function() {	
 alert('из a.in_list');
});

$('a.no_list').click(function() {
  var this_link      = $(this);  
  var id_user   = $(this).attr('id');
  alert('link_class = ' + this_link.attr('class'));               // выводит класс 'in_list' ?!
  $.ajax (  
  { 
   type: "POST",
   url: "/addWatch.php",
   data: "id_user="+id_user,
   success: function(msg) {   
     if ( msg == true ) { 
	  this_link.removeClass('no_list').addClass('in_list')        // делаем видимой ссылку 
	  alert('this_link.attr(class) = '+ this_link.attr('class')); // выводит класс 'in_list' 
	  this_link.text('К списку выбранных');                           
	  this_link.attr('href','/watchList.php');                    // вставляем ссылку на список просмотра
  	 }
    } 
  })  
  return false;
});


Файл style.css
@charset "utf-8";
/* CSS Document */
.show {display: inline-block}
a.in_list {display: inline-block}
a.no_list{display: none}

.card {
 padding-top:10px;
 margin:35px 0 25px 0;
}

Не нашел чем код css обрамлять здесь
Ответить с цитированием