0

これは、従来の JavaScript を使用した水平メニューです。

function createcssmenu()
{
    var ultags = document.getElementById("navmenu").getElementsByTagName("ul");
    for (var t = 0; t < ultags.length; t++)
    {
        ultags[t].style.top = ultags[t].parentNode.offsetHeight -1 + "px";
        ultags[t].parentNode.onmouseover = function()
        {
            this.style.zIndex = 100;
            this.getElementsByTagName("ul")[0].style.visibility = "visible";
            this.getElementsByTagName("ul")[0].style.zIndex = 0;
        }
        ultags[t].parentNode.onmouseout = function()
        {
            this.style.zIndex = 0;
            this.getElementsByTagName("ul")[0].style.visibility = "hidden";
            this.getElementsByTagName("ul")[0].style.zIndex = 100;
        }
    }
}

if (window.addEventListener)
    window.addEventListener("load", createcssmenu, false);
else if (window.attachEvent)
    window.attachEvent("onload", createcssmenu);

jQuery構文を使用して書き直す必要があります。

これは私が来たところです:

$(document).ready(function ()
{
    $('#navmenu ul').css('top', $('#navmenu ul').parent().height() - 1 + "px");

    $('#navmenu ul').parent().bind('mouseover', function ()
    {
        $(this).css('z-index', 100);
        $('#navmenu ul').css({ 'visibility': 'visible', 'z-index': 0 });
    });

    $('#navmenu ul').parent().bind('mouseout', function ()
    {
        $(this).css('z-index', 0);
        $('#navmenu ul').css({ 'visibility': 'hidden', 'z-index': 100 });
    });
});

正しく動作しません。

相変わらずLINEに困っていthis.getElementsByTagName("ul")[0]ます。

JSfiddle http://jsfiddle.net/sublay/HCajr/を見てください。

通常のメニューで動作するはずです。

ありがとうございました!

関連する質問JavaScript から jQuery への構文 まだ変換に関するヘルプが必要

4

2 に答える 2

1

私はこれがあなたが望むものだと思います

$(document).ready(function ()
{
    $('#navmenu ul').css('top', $('#navmenu ul').parent().height() - 1 + "px");
    $('#navmenu ul').each(function(){
        $(this).css('top', $(this).parent().height() - 1 + "px")
    });

    $('#navmenu ul').parent().bind('mouseover', function ()
    {
        $(this).css('z-index', 100);
        $('ul',this).css({ 'visibility': 'visible', 'z-index': 0 });
    });

    $('#navmenu ul').parent().bind('mouseout', function ()
    {
        $(this).css('z-index', 0);
         $('ul',this).css({ 'visibility': 'hidden', 'z-index': 100 });
    });
});
于 2013-04-16T11:01:57.440 に答える
1

上記の JavaScript を書き直そうとする代わりに、いつでも単純化できます。

このフィドルを見てください - http://jsfiddle.net/DeHQ5/

$(document).ready(function () {
    $('#navmenu ul').css('top', $('#navmenu ul').parent().height() - 1 + "px");

    $('#navmenu > li').bind('mouseover', function () {
        $(this).children('ul').css({
            'visibility': 'visible',
            'z-index': 0
        });
    });

    $('#navmenu > li').bind('mouseout', function () {
        $(this).children('ul').css({
            'visibility': 'hidden',
            'z-index': 100
        });
    });
});

主な変更点は、最初の兄弟セレクター#navmenu > liです。

于 2013-04-16T11:00:54.973 に答える