简体   繁体   English

帮助jquery选择器ul与级别

[英]help with jquery selector ul with levels

I have this html 我有这个HTML

<ul id="menu">
    <li><input type="button" id="btnMenu-1" class="btnMenu" value="pitillo"></li>
        <ul class="subMenu">
            <li><input type="button" id="SubBtn-1" class="btnSubMenu" value="sub-pitillo"></li>
    </ul>
    <li><input type="button" id="btnMenu-2" class="btnMenu" value="tal"></li>
        <ul class="subMenu">
            <li><input type="button" id="subBtn-2" class="btnSubMenu" value="sub-tal"></li>
        </ul>
</ul>

I want to select the sub menu but not by the class , in the moment when the user is in mouse enter event i tried like this but it doesn't work 我想选择子菜单而不是类 ,在用户进入鼠标的时刻输入事件我试过这样但是它不起作用

$(document).ready(initialize); $(文件)。就绪(初始化);

function initialize(){
    $(".btnMenu").button();
    $("#menu li").hover(mouseEntry,mouseOut);
    $('.btnSubMenu').button();
}

function mouseEntry(){
    $('ul', this).slideDown(100);
 }

function mouseOut(){
    $('ul',this).slideUp(100);
}

this is my live demo 这是我的现场演示

I'm not sure if this is what you're after but changing the HTML to: 我不确定这是否是您所追求的,但将HTML更改为:

<ul id="menu">
    <li><input type="button" id="btnMenu-1" class="btnMenu" value="pitillo">
        <ul class="subMenu">
            <li><input type="button" id="SubBtn-1" class="btnSubMenu" value="sub-pitillo"></li>
        </ul>
    </li>
    <li><input type="button" id="btnMenu-2" class="btnMenu" value="tal">
        <ul class="subMenu">
            <li><input type="button" id="subBtn-2" class="btnSubMenu" value="sub-tal"></li>
        </ul>
    </li>
</ul>

will put the subMenu into the menu so that your JavaScript actually slides it out. 将subMenu放入菜单中,以便您的JavaScript实际将其滑出。 You'll also have to make sure you select only the 'outer' li. 您还必须确保只选择“外部”li。 This is done by adding a '>' to the selector: 这是通过向选择器添加“>”来完成的:

function initialize(){
    $(".btnMenu").button();
    $("#menu>li").hover(mouseEntry,mouseOut);
    $('.btnSubMenu').button();
}

The <ul> is not a child of the <li> , it's a sibling. <ul>不是<li>的孩子,它是兄弟姐妹。 So use .next() . 所以使用.next()

http://jsfiddle.net/9vLDy/28/ http://jsfiddle.net/9vLDy/28/

function mouseEntry(){
    $(this).next('ul').slideDown(100);
}

function mouseOut(){
    $(this).next('ul').slideUp(100);
}

我不是100%确定这是否适合您,但请尝试将mouseEntry / mouseOut事件更改为:

$("ul", $(this))

Try this: 尝试这个:

function initialize(){
    $(".btnMenu").button();
    $("#menu > li").hover(mouseEntry,mouseOut);
    $('.btnSubMenu').button();
}

function mouseEntry(){
    $(this).find('>ul').slideDown(100);
 }

function mouseOut(){
    $(this).find('>ul').slideUp(100);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM