primary-nav 内に 4 つのリンクがあり、対応する slideDown 要素をアクティブにする必要があります。.patient > a
リンクには、 、.doctor > a
、.primary > a
およびという個別の親クラスがあり.locations > a
ます。
誰かがクリックしたとき、.patient > a
私は ul.patient をターゲットとする ul にする必要があります。
私は実験のようなものですが、これは私がこれまでに持っているものです:
var $patientDrop = $('ul.patient');
$patientDrop.hide();
$('.patient > a').click(function() {
if ($patientDrop.is(':visible')) {
$patientDrop.slideUp(function() {
$('.patient > a').removeClass('active');
});
}
else {
$patientDrop.slideUp(function() {
$('.patient > a').removeClass('active');
});
$patientDrop.slideDown();
$('.patient > a').addClass('active');
}
});
$('body').click(function(event) {
if (!$(event.target).is('a')) {
$patientDrop.slideUp(function() {
$('.patient > a').removeClass('active');
});
}
});
今、学習のためだけに変数を使用していますが、おそらくそれらはここで必要なものです。しかし、私の本当の質問は、これを最も効率的な方法で行う方法です。4 つのリンクとそれぞれに対応する UL で機能するようにするためだけに、このコードすべてを異なる変数で 4 回繰り返す必要はありません。
彼らが言う方法は、次の方法です。primary-nav a, get class of clicked a, find ul with this class
そして、スクリプトの残りの部分を実行しますか?
jsFiddle: http://jsfiddle.net/DRZZr/