次のコードを使用して、レスポンシブ テーマのメニューのウィンドウ サイズ変更のクラスを削除しようとしていますが、機能しません。
(function() {
var $window = $(window),
$ul = $('ul.nav');
$window.resize(function(){
if ($window.width() < 979) {
return $ul.addClass('float');
}else{
$ul.removeClass('float')};
}).trigger('resize');
});
.float は .css で定義されていません。サブメニュー (管理領域で動的に生成される) が大きすぎてコンテナーに収まらない場合にのみ使用できます。
サブメニューが大きすぎる場合に「フロート効果」を生成するコードは次のとおりです。
$('.float > li.dropdown > a + ul').each(function(index, element) {
// IE6 & IE7 Fixes
if ($.browser.msie && ($.browser.version == 7 || $.browser.version == 6)) {
var category = $(element).find('a');
var columns = $(element).find('ul').length;
$(element).css('width', (columns * 143) + 'px');
$(element).find('ul').css('float', 'left');
}
var menu = $('.float').offset();
var dropdown = $(this).parent().offset();
i = (dropdown.left + $(this).outerWidth()) - (menu.left + $('.float').outerWidth());
if (i > 0) {
$(this).css('margin-left', '-' + (i + 5) + 'px');
}
});
メニューコードの冒頭の一部です
<?php if ($categories) { ?>
<div class="menu">
<ul class="nav float">
<?php foreach ($categories as $category) { ?>
<li class="dropdown"><a href="<?php echo $category['href']; ?>">
<?php echo $category['name']; ?></a>
.
.
.
.
ecc.
ウィンドウのサイズ変更時にクラス「.float」を削除/追加する他のアイデアはありますか? ヒントをお寄せいただきありがとうございます。
編集
少し試した後、.cssクエリを使用した代替ソリューションを見つけました
@media (max-width: 979px)
現在は機能していますが、jQueryのサイズ変更が機能しない理由をまだ理解できません。