javascript - 如果第 nth-child 为 1 或 2,则右对齐菜单

标签 javascript jquery html css

我正在开发一个大型菜单,它显示左侧或右侧的下拉菜单,到目前为止我无法正确计算 offset.left 并且它表现出不同的不同分辨率。

所以我想在右侧显示第一个和第二个下拉菜单并在左侧显示,但我不确定如何让第 n 个子元素在 if 语句上工作。

简单的 fiddle 示例 http://jsfiddle.net/42MfQ/1/

我的大型菜单示例显示为这个 enter image description here 大型菜单的实际 fiddle 样本 http://jsfiddle.net/5eecT/13/

如果能帮助这个脚本正确显示菜单,我将不胜感激。

现在这段代码不能正常工作

if (($(this).offset().left) + 200 > $('.menu-wrapper').width()) {
    $(this).find(".dropdown").addClass("dropdown-last");
}

出于这个原因,我虽然首先显示右侧的第二个下拉菜单,左侧的其余部分将避免自动检测,如上面的代码所计算的那样。

我不知道怎么写这段代码

   if($( "li:nth-child(1)" ) == true || "li:nth-child(2)" == true ))
   {
     alert('show dd menu on right side of parent menu');  
   }

否则 { alert('在父菜单的左侧显示dd菜单');

最佳答案

我只是决定使用以下 jquery 来让它处理任何意外结果。

这简单地添加了一个 dropdown-last 类,它在文本的左侧对齐子菜单。下面是一个例子,你可以用它来让它以你想要的方式工作

$("#menu").on("mouseenter", ":nth-child(4)", function () { $(this).find(".dropdown").addClass("dropdown-last"); });
$("#menu").on("mouseenter", ":nth-child(5)", function () { $(this).find(".dropdown").addClass("dropdown-last"); });
$("#menu").on("mouseenter", ":nth-child(6)", function () { $(this).find(".dropdown").addClass("dropdown-last"); });

因为下面的 jQuery 在不同的屏幕分辨率上给了我意想不到的结果。

    if (($(this).offset().left) + 200 > $('.menu-wrapper').width()) {
        $(this).find(".dropdown").addClass("dropdown-last");
    }

关于javascript - 如果第 nth-child 为 1 或 2,则右对齐菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474847/

相关文章:

jquery - browserLink 上无法识别的表达式

php - 帖子中的多字变量被截断

javascript - myVar = !!someOtherVar

javascript - 使用 dojo/dnd/Moveable 时如何禁用/停止拖动操作?

javascript - 添加新的下拉选项 Jquery

javascript - JQuery通过单击同一行上的按钮获取第一个td

html - 我怎样才能有一个固定的顶部栏,100% 的内容

javascript - HTML5 视频的最佳方法是什么?

javascript - 无法修复 sigma js 中的 x 和 y 位置

javascript - 为什么 $ ('#id' ).val() 不工作而 document.getElementById ('id' ).value 工作完美?