2013-03-23 2 views
0

У меня есть ссылка a с id #searchBoxPop2. После его щелчка, я хочу вызвать функцию #searchBoxPop2.toggle. Моя проблема в том, что я должен дважды щелкнуть по ссылке для переключения. Можете ли вы, ребята, помочь этому грязному сценарию? Большое спасибоФункция внутри события щелчка требует 2 щелчка, чтобы вызвать

$('#searchBoxPop2').live('click', function() { 
     if (!$('.header-wrapper-home').length) { 
      $('div.right-block').show(); 

       $('#searchBoxPop2').toggle(
       function() { 
       $('.detail-page-content').animate({ 
        marginTop: "+=290px" 
       }, 800) 
      }, 
       function() { 
       $('.detail-page-content').animate({ 
        marginTop: "0px" 
       }, 800); 
      }); 
     } 
     if ($('.header-wrapper-home').length) { 
      $('.header-wrapper-home').slideToggle('slow'); 

     } 
    }); 

Пожалуйста, дайте мне знать, если вы хотите, чтобы я объяснить остальную часть кода и то, что я собираюсь делать в Detial.

+0

http://api.jquery.com/toggle-event/ устарел в 1.9 –

+0

, что происходит, когда вы сначала нажимаете тег 'a', вы устанавливаете его событие' toggle', и оно запускается с помощью второй щелчок. Событие 'toogle' запускается всякий раз, когда вы нажимаете на элемент, вам не нужно это событие« click », которое вы устанавливаете. Тем не менее, 'toggle', как сказал предыдущий комментатор, больше не используется. – ecampver

+0

Спасибо. @EdgarAllanPwn: Какая лучшая альтернатива для переключения? – user1889007

ответ

1

Как я сказал в комментарии, toggle event function был устаревшим в jQuery 1.9. Таким образом, вам нужно использовать свой собственный метод для альтернативных вызовов. Сначала меня раздражало, что встроенной альтернативы не существует, но этот метод более краток. Тем более, что, как только у вас есть формат вниз, его легко реплицировать на любой другой вызов события.

Вот быстрая и грязная функция обратного вызова, которую я только что написал. Есть, вероятно, более эффективные способы достижения этого, но это хорошая отправная точка:

function() { 
    var number = 2; // the number of events you toggle through 
    if (! window.toggle_counter) 
     window.toggle_counter = 0; 
    switch (window.toggle_counter) { 
     case 0: 
      // do some things 
      break; 
     case 1: 
      // do other things 
      break; 
     // etc .. 
    } 
    window.toggle_counter = (window.toggle_counter + 1) % number; 
} 

Имейте в виду, что window.variable_name является глобальный масштаб, так что будьте осторожны конфликтов.

+0

Спасибо Спасибо Спасибо! :) – user1889007

Смежные вопросы