2012-04-25 5 views
1

Я работаю над выполнением простых действий из библиотеки jQuery.Как свести к минимуму мой сценарий jQuery

$('#hasAccount').click(function() { 
     $('.authForm').slideDown(500, function() { 
      if ($('.shippingAddress').is(':visible')) { 
       $('.shippingAddress').slideUp(250); 
      } 
     }); 
}); 

$('#hasNotAccount').click(function() { 
     $('.shippingAddress').slideDown(500, function() { 
      if ($('.authForm').is(':visible')) { 
       $('.authForm').slideUp(250); 
      } 
     }); 
}); 

Вот код рабочий: http://jsfiddle.net/6tZQ2/2/

Это очень простой, но мне интересно, есть ли solutiosn для этого сценария сводится на минимум в 1 действии?

Спасибо :-)

+0

практическое использование? или это больше для игры в гольф? если вы так, вы можете включить этот тег! –

ответ

0

Вы можете использовать slideToggle и потерять, если заявления

+0

Да, но с помощью slideToggle вы можете закрыть свою коробку с помощью переключателя :-( – Laurent

0

Здесь я пойти - хотя есть миллионы способов сделать это лучше/красивее/более компактный ... это быстрый в моей голове ...:/

http://jsfiddle.net/neuroflux/6tZQ2/3/

[править] Несмотря на то, - это name атрибут на основе - так, вероятно, лучше сделать это по-другому :)

+0

Спасибо за ваш ответ Neuro: o) – Laurent

+0

Нейро, как вы думаете, я могу использовать hasClass() для вашего сжатого скрипта? – Laurent

+0

yup! http://jsfiddle.net/neuroflux/6tZQ2/17/ –

0

Попробуй, я не эксперт в JQuery:

$('input[name="account"]').click(function(e) { 
    if(e.target.id == 'hasAccount') { 
     $('.authForm').slideDown(500, function() { 
      if ($('.shippingAddress').is(':visible')) { 
       $('.shippingAddress').slideUp(250); 
      } 
     }); 
    } else { 
     $('.shippingAddress').slideDown(500, function() { 
      if ($('.authForm').is(':visible')) { 
       $('.authForm').slideUp(250); 
      } 
     }); 
    } 
}); 
0

Как насчет охватывает обе функции в более общем йот.

1

Возможно, это?

http://jsfiddle.net/6tZQ2/16/

+0

Я бы сказал, что это самый эффективный ответ, заданный sofar (не выполняющий несколько запросов $() на одном и том же элементе). Единственное, что я скажу, это то, что я сделал бы $ ('# hasAccount, #hasNotAccount') вместо $ ('input [name = "account"]'), поскольку он более конкретный (всегда будет только перебирать эти два элемента) и селекторов id более эффективны в целом. – lucideer

+0

Спасибо за ваш ответ !!! – Laurent

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