如何使用jquery next()按类选择下一个div

Rya*_*son 21 jquery

我对jquery很陌生,并且正在努力应对相当简单的事情.我想从类"MenuItemSelected"的div中选择带有"MenuItem"类的上一个和下一个div.

HTML

<div id="MenuContainer" class="MenuContainer">
    <div id="MainMenu" class="MainMenu">
        <div class="MenuItem">
            <div class="MenuItemText">Menu Item #1</div>
            <div class="MenuItemImage">images/test1.jpg</div>
        </div>    
        <div class="MenuDividerContainer">
            <div class="MenuDivider"></div>
        </div>
        <div class="MenuItem MenuItemSelected">
            <div class="MenuItemText">Menu Item #2</div>
            <div class="MenuItemImage">images/test2.jpg</div>
        </div>
        <div class="MenuDividerContainer">
            <div class="MenuDivider"></div>
        </div>
        <div class="MenuItem">
            <div class="MenuItemText">Menu Item #3</div>
            <div class="MenuItemImage">images/test3.jpg</div>
        </div>
    </div><!--/ .MainMenu -->
</div><!--/ .MenuContainer -->
Run Code Online (Sandbox Code Playgroud)

这是我认为应该有效的下一个jquery.

$('div.MenuItemSelected').next('.MenuItem');
Run Code Online (Sandbox Code Playgroud)

我也试过了

$('div.MenuItemSelected').nextAll('.MenuItem');
Run Code Online (Sandbox Code Playgroud)

我唯一可以上班的是

$('div.MenuItemSelected').next().next();
Run Code Online (Sandbox Code Playgroud)

这看起来很好,有什么想法吗?

kar*_*m79 43

你有没有尝试过:

$('div.MenuItemSelected').nextAll('.MenuItem:first');
Run Code Online (Sandbox Code Playgroud)

我认为您面临的问题是next返回下一个兄弟,而nextAll返回与您的选择器匹配的所有后续兄弟的集合.将:first选择器应用于nextAll过滤器应该使事情正确.

我想指出的是,如果你的标记结构是一致的(所以它总能保证工作),那么你当前的解决方案可能(基准,基准,基准)是更快的方式:

$('div.MenuItemSelected').next().next();
Run Code Online (Sandbox Code Playgroud)