基于 jQuery 的下拉菜单在右对齐时不起作用

标签 jquery html css

我有以下脚本,几乎可以完美运行:

HTML:

<div class="menu">
    <div class="navigation1">icon Home</div>
    <div class="dropdown">
        <div class="items">icon Default 1</div>
        <div class="items">icon Reports 1</div>
        <div class="items">icon Other 1</div>
    </div>
    <div class="navigation2">icon Home</div>
    <div class="dropdown">
        <div class="items">icon Default 2</div>
        <div class="items">icon Reports 2</div>
        <div class="items">icon Other 2</div>
    </div>
</div> 

CSS:

.menu {
    position: relative;
    background-color:silver;
    font-family:Arial;
    font-size:12px;
    height:25px;
}

.navigation1 {
    float:left;
    padding:5px 10px 5px 10px;
    cursor:pointer;
}

.navigation2 {
    float:right;
    padding:5px 10px 5px 10px;
    cursor:pointer;
}

.navigation1::selection, .navigation2::selection { background:transparent; }
.navigation1::-moz-selection, .navigation2::-moz-selection { background:transparent; }

.navigation1:hover, .navigation2:hover {
    background-color:gray;
}

.navigation1.active, .navigation2.active {
    border:1px solid black;
    border-bottom-color:white;
    padding:4px 9px;
    background-color: white;
    position:relative;
    z-index:1;
}

.dropdown {
    display:none;
    border:1px solid black;
    border-bottom-width:2px;
    background-color:white;
    position:absolute;
    top:24px;
    padding:5px 10px;
    cursor:pointer;
}​

jQuery:

$(document).click(function(event) {
    $('.navigation1.active, .navigation2.active').click();
    $('.navigation1').removeClass("active");
});

$('.dropdown').each(function() {
    $(this).css('left', $(this).prev().position().left);
});

$('.navigation1, .navigation2').click(function(event) {
    $(this).siblings('.navigation1.active, .navigation2.active').click();
    $(this).toggleClass('active').next().toggle();
    event.stopPropagation();
});

$('.navigation1, .navigation2').disableSelection();​

问题:

唯一的问题是右边的菜单,当它的下拉菜单下拉时,文本最终会换行,因为下拉菜单不够宽。我如何根据其中的文本将下拉菜单设置为正确的宽度,但允许它突出在左侧。

基本上,对于左侧菜单,下拉菜单从菜单右侧突出

对于右侧菜单,下拉菜单应该从菜单左侧突出。

jsFiddle:

http://jsfiddle.net/mnXdv/53/

最佳答案

所以首先,请检查这个 http://jsfiddle.net/MTESY/

如果您看到预期的结果,实现它的方法是为您的第二个下拉列表 div 提供第二个类,比如 second。之后创建一个 css 类 .second {left: auto !重要的;右:0}。那你应该很好。

关于基于 jQuery 的下拉菜单在右对齐时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13533129/

相关文章:

javascript - JS - 使用 Ajax 获取文件名

jquery - JCarousel - 使用 add() 添加的项目不响应 .click()

html - 为选择提供与输入相同的轮廓样式

javascript - HTML 脚本不工作

jquery - 摆脱数据表中的复制按钮和页眉/页脚

css - 如何为spark动画横幅添加背景图片?

javascript - 如何在图像完全加载和渲染后调用方法?

javascript - html5 地理定位是否有 'GPS status changed' 事件?

css - 将 SCSS `@extends` 与深层元素样式一起使用

jquery - 在 Asp.net MVC View 中,如何使用 jQuery 解析刚刚从 Controller 返回的 XML