Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Исчезновение текста(блока) при нажатии на него. (https://javascript.ru/forum/jquery/41923-ischeznovenie-teksta-bloka-pri-nazhatii-na-nego.html)

KOPC1886 04.10.2013 13:06

Исчезновение текста(блока) при нажатии на него.
 
Всем привет!) Изучаю Jquery) Только начал)
Вот делаю всплывающий текст при нажатии на ссылку, но есть такая проблема. Когда нажимаю на TWO TEXT, высплывающий текст появляется и тут же исчезает( Как это исправить? С первым текстом все хорошо.
Вот код:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
</head>
<body>
<script src="http://code.jquery.com/jquery-latest.js"></script>
  
  <ul>    
    <li>
      <a class="block-sap-img">
        <div class="prev-text">
          	ONE TEXT
        </div>
        <span class="platform-tooltip" style="display:none;">
          <span class="arrow"></span>
          <i></i><b>ONE</b>
          <br/>ONE<br/>
        </span>
      </a>
    </li>
  </ul>
  <ul>    
    <li>
      <a class="block-sap-img">
        <div class="prev-text">
          	TWO TEXT
        </div>
        <span class="platform-tooltip" style="display:none;">
          <span class="arrow"></span>
          <i></i><b>TWO</b>
          <br/>TWO<br/>
        </span>
      </a>
    </li>
  </ul>
  
<script>
	$(".block-sap-img").click(function(e)
	{
		e.preventDefault();
		$(this).children(".platform-tooltip").fadeToggle("fast");
		$(this).toggleClass("active");      	
		$(this).children(".platform-tooltip").css("overflow","");

	});

	// скрытие тултипов попапов
	$(document).on("click",function(e){
      	var $result = $('.block-sap-img');
		if($(e.target).parents().index($result.parent()) == -1)
          if($result.children(".platform-tooltip").length)
				$result.children(".platform-tooltip").fadeOut("fast");
	});

	$(".platform-tooltip").click(function(e){
        e.stopPropagation();
	});
</script>

</body>
</html>



И так же , если нажать вне границ ссылки, то исчезает еще и первый всплывающий текст( Как всё это исправить?

KOPC1886 04.10.2013 13:13

Так же я только что заметил, что при клике на ссылку (любую одну), то активными становятся и остальные(

mdlv 08.10.2013 13:07

У Вас слишком сложный код для простого эффекта.

С первым текстом тоже не все хорошо :)

Используйте для разделения нажатий на разные блоки разные id, а не один общий класс .platform-tooltip - из-за этого функция срабатывает одновременно для двух блоков.

Цитата:

И так же , если нажать вне границ ссылки, то исчезает еще и первый всплывающий текст(
Вы обрабатываете не нажатие на ссылку.

$("блок на который кликнули").click(function () {
    $("блок(и) который надо сворачивать-разворачивать").fadeToggle("fast");
});

рони 08.10.2013 14:03

KOPC1886,
добавьте отмену всплытия в 41 строку тоже самое в начало что в 57.
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
</head>
<body>
<script src="http://code.jquery.com/jquery-latest.js"></script>

  <ul>
    <li>
      <a class="block-sap-img">
        <div class="prev-text">
          	ONE TEXT
        </div>
        <span class="platform-tooltip" style="display:none;">
          <span class="arrow"></span>
          <i></i><b>ONE</b>
          <br/>ONE<br/>
        </span>
      </a>
    </li>
  </ul>
  <ul>
    <li>
      <a class="block-sap-img">
        <div class="prev-text">
          	TWO TEXT
        </div>
        <span class="platform-tooltip" style="display:none;">
          <span class="arrow"></span>
          <i></i><b>TWO</b>
          <br/>TWO<br/>
        </span>
      </a>
    </li>
  </ul>

<script>
	$(".block-sap-img").click(function(e)
	{   e.stopPropagation();
		e.preventDefault();
  		$(this).toggleClass("active")
        .children(".platform-tooltip")
        .fadeToggle("fast")
        .css("overflow","");


	});

	// скрытие тултипов попапов
	$(document).on("click",function(e){
       $('.block-sap-img .platform-tooltip').fadeOut("fast");;

	});

	$(".platform-tooltip").click(function(e){
        e.stopPropagation();
	});
</script>

</body>
</html>


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