Javascript tylko jedno kliknięcie


(Kernelus) #1

Witam,

Posiadam funkcje, która wyświetla obiekt z efektem, już zrobiłem że gdy jeden obiekt jest widoczny i po kliknięciu na inny ten peirwszy się chowa. Lecz mam inny problem, kiedy mam pokazany obiekt to jak kliknę na niego jeszcze raz to znowu się wywołuje .show z efektem. Chciałbym zrobić że jak jest obiekt widoczny to gdy nacisnę znowu to żeby nic się nie działo. Oto kod funkcji.

function ShowObjectWithEffect(id, flag, effect, length, easing)

{

   var selector = '#' + id;

   var options = {};

   var index;

   var liczba=0;

   var directions = new Array();

   directions[0] = "horizontal";

   directions[1] = "vertical";

   directions[2] = "left";

   directions[3] = "right";

   directions[4] = "up";

   directions[5] = "down";

   for (i=0; i<6; i++)

   {

      index = effect.indexOf(directions[i]);

      if (index != -1)

      {

         options = { direction : directions[i] };

         effect = effect.substring(0, index);

      }

   }

   if ($(selector).css('visibility') == 'hidden')

   {

      $(selector).css('display', 'none');

      $(selector).css('visibility', '');

   }

   if (effect == 'fade')

   {

      if (flag == 1)

         $(selector).fadeIn(length);

      else

         $(selector).fadeOut(length);

   }

   else

   {

      if (typeof easing != 'undefined')

      {

         options.easing = easing;

      }

      if (flag == 1)

	  {

         $(selector).toggle(effect, options, length);

		 }

      else

      if(($(selector).css('visibility') == 'visible') && ($(selector).css('display') != 'none'))

	  {

         $(selector).hide(effect, options, length);

	  }

   }

}

Dodane 14.04.2013 (N) 11:16 – Problem rozwiązany, wystarczyło dodać zapytanie

if($(selector).is(':hidden'))