特定のメニュー項目をクリックしたときに発生する関数を記述しました。本質的に、コードはクリックされたメニューの( 'li')から引き出された前記ドックの名前と共に、ページの下部にあるドックを(アクティベートされたクラスにクラスを変更することによって)置き換える。これはちょっと難しいですが、うまくいけばこれは理にかなっています。jQuery関数をキューに入れて再呼び出しが速すぎると誤動作を防ぐ方法
拡張jquery-uiバージョンのaddClassとremoveClassを使用して、ドックが画面の下からスライドし、選択された交換用のドックがスライドして所定の位置に収まるようにするために、同時に、ドックの名前がフェードアウトし、置き換えられ、新しい名前が元に戻ります。
これはすごくうまくいきますが、アニメーションがまだ行われている間に別のメニュー項目を選択した場合、効果は大きくなります。アニメーションがまだ実行されている間に再び呼び出された場合、単に関数をキューに入れるために、以下のコードを変更する必要があります。また、これが複雑であることが判明した場合は、まだアクティブな間に関数が再び呼び出されるのを防ぐことができれば幸いです。
どのように私はこれについて行くだろう知っていますか?
function selectFilter($this) {
var $filtername = $this.text();
var $activedock = $('.activedock');
$selected_dock = $('#' + $filtername);
$name = $('#filter_name').find('h1');
if ($filtername == $activedock.attr('id')) {
return false;
}
var $filtertext = $filtername;
$activedock.removeClass('activedock', 1000);
$name.fadeOut('1000', function() {
$selected_dock.addClass('activedock','1000');
$name.text($filtertext);
$name.fadeIn('1000', function() {
var $menuWidth = $('#filter_name').width();
$('#filter_menu').css('min-width', $menuWidth);
});
});
}
P.私はjQueryに比較的新しいので、上のコードがベストプラクティスなどを使用していない場合は私の謝罪をしています....私はまだ学んでいます。以下のコードに示すように、ユーザがメニュー項目をクリックしたときにも上記の関数が呼び出される
: -
//Show filter menu
$(document).ready(function() {
$('#full-width-layout_c1_col-1-1_1').on('mouseenter mouseleave click', '#filter_name', function(event) {
var $menu = $('#filter_menu');
var $icon = $('#popupicon');
//Hover over Filter Name
if (event.type == 'mouseenter') {
$menu.addClass('menu_hovered_item');
$icon.show('fade', 200);
}
else if (event.type == 'mouseleave'){
$menu.removeClass('menu_hovered_item');
$icon.hide('fade', 200);
}
//Open menu on click
else if (event.type == 'click'){
$menu.show('fade','slow');
//hover or click on menu item
$('#full-width-layout_c1_col-1-1_1').on('mouseenter mouseleave click', '#filter_menu li', function(event) {
var $menuItem = $(this);
if (event.type == 'mouseenter') {
$menuItem.addClass('menu_hovered_item');
}
else if (event.type == 'mouseleave'){
$menuItem.removeClass('menu_hovered_item');
}
else if (event.type == 'click'){
var $this = $(this);
selectFilter($this);
$menu.hide();
}
});
}
});
});
完璧!多くのありがとうジョン – gordyr