Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   условие на событие клика (https://javascript.ru/forum/dom-window/47430-uslovie-na-sobytie-klika.html)

sergeo_89 23.05.2014 16:32

условие на событие клика
 
Запутался в условии, подскажите как отследить кнопку на которую нажал пользователь и в зависимости от этого выполнить определенные действия, вот код
$(document).ready(function(){

$('#secondMenu_2, #secondMenu_3, #secondMenu_4').hide();

var flag = new Boolean(true);

$('#variant_2 a, #variant_3 a, #variant_4 a').click(function() {
 if (flag) {
   flag = false;
   func1.call(this);
 	} 
 	else {
   flag = true;
   	func2.call(this);
}
 return false;
});

function func1(){
if($('#variant_2 a').id == $(this).id){
   	$('#secondMenu_2').slideDown(1000);
   }
   else if($('#variant_3 a').id == $(this).id){
   	$('#secondMenu_3').slideDown(1000);
   }
   else if($('#variant_4 a').id == $(this).id){
   	$('#secondMenu_4').slideDown(1000);
   }
};

function func2(){
$('#secondMenu_2, #secondMenu_3, #secondMenu_4').slideUp(1000);
};

Пробовал через
if($('#variant_2 a').target == $(this).target){
   	$('#secondMenu_2').slideDown(1000);
   }
не получается, грубо говоря мне надо сделать условие: Если пользователь нажал на кнопку 1, то выполнить одно условие, если на 2 - другое и так далее, буду признателен за ваши мысли

arahmanov 23.05.2014 16:50

Вешай на кнопку обработчик событий ,

<input name="btn_1" id='btn_1' type="button onclick='btn(1)'" />
 <input name="btn_1" id='btn_1' type="button onclick='btn(2)'" />
 <input name="btn_1" id='btn_1' type="button onclick='btn(3)'" />
 <input name="btn_1" id='btn_1' type="button onclick='btn(4)'" />


function btn(x) {
if (x==1) {твое условие};
if (x==2){твое условие};
if (x==3){твое условие};
if  (x==4){твое условие};
}

sergeo_89 23.05.2014 18:06

здесь фишка в том, что это элементы меню, Я делаю раскрывающее меню, используя тэги nav и sector, поэтому надо как то без инпутов обойтись(( может есть какой то метод, который определяет
if($('нажимаемая кнопка') == какому то методу конструкции $(this)) {...}

Vlasenko Fedor 23.05.2014 19:14

<div id="variant_2">
  <a href="#">variant_2</a>
</div>
<div id="variant_3">
  <a href="#">variant_3</a>
</div>
<div id="variant_4">
  <a href="#">variant_4</a>
</div>
<script>
  window.onload = hookLinks;

  function hookLinks() {
    var links = document.querySelectorAll('div[id^=variant_] > a');
    for (var i = 0; i < links.length; i++) {
      links[i].onclick = window[links[i].parentNode.id];
    }
  }

  function variant_2() {
    alert("variant_2");
  }

  function variant_3() {
    alert("variant_3");
  }

  function variant_4() {
    alert("variant_4");
  }
</script>

внимательно посмотрите на свою задачу. Уверен есть гораздо лучший подход ее решения

sergeo_89 26.05.2014 16:20

Спасибо за помощь! В итоге решил задачу простеньким способом
$('#block_A li div a').click(function(){

    if($(this).next().is(':visible') == false) {
      $('#block_A ul').slideUp(300);
    }
    $(this).next().slideToggle(300); 
  });


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