0

これは長い道のりだと感じてください。関数 var が必要だとは思いませんが、これを機能させるのに苦労しています。スクリプトの下部を onmouse leave に変更しましたが、常に間違った要素をターゲットにしています。

div がクリックされるのを探し、ul を表示し、mouseout で非表示にするスクリプトを作成します。

$(function() {
    var toggleMenu = function(e) {
        var self = $(this),
            elemType = self[0].tagName.toLowerCase(),
            //get caller
            menu = null;
        if (elemType === 'a') {
            //anchor clicked, nav back to containing ul
            menu = self.parents('ul').not('ul#logo_menu');
        } else if (elemType === 'ul') {
            //mouseleft ul, ergo menu is this.
            menu = self;
        }
        if (menu) {
            menu.hide('medium');
        }
        e.preventDefault();
        return false;
    };
     $(document).ready(function() {
        $('div.logo_menu').click(function(e) {
            $('ul#logo_menu ul').show('medium');
            console.log('div clicked');
            e.preventDefault();
            return false;
        });
        $('ul#logo_menu a').click(toggleMenu);
        $('ul#logo_menu ul').mouseleave(toggleMenu);
    });
});

私が目標とするとき。クリックされた方が書きやすい?

$(document).ready(function() {
     $('a.drop').click(function(e) {
         $(this).next("div").show('slow');
         console.log('div clicked');
         e.preventDefault();
         return false;
     });
    $('li.mainmenudrop').mouseleave(function() {
        $(this).children("div").hide('slow');
    });
});
4

1 に答える 1

1

これはあなたが得ることができる限り短いと思います:

$(document).ready(function() {
  $('div.logo_menu').click(function() {
    $('#logo_menu ul').show('medium');
    return false;
  });

  $('#logo_menu a').click(function() {
    $(this).parents('ul').not('#logo_menu').hide('medium');
    return false;
  });

  $('#logo_menu ul').mouseleave(function() {
    $(this).hide('medium');
  });
});
于 2012-07-17T23:20:18.063 に答える