javascript - 使用jquery计算页面中第一级UL LI的数量

标签 javascript jquery

我有一些 jquery,它将计算我菜单中的项目,并为 li 分配一个以 px 为单位的计算宽度。

代码如下:

$(document).ready(function(){
    $('div#new-menu-lower ul li').css('width', ($('div#new-menu-lower ul').width() / $('div#new-menu-lower ul li').length));
    $(function() {
        var menuWidth = $('div#new-menu-lower ul').width();
        var listItems = $('div#new-menu-lower ul li').length;
        var itemWidth = Math.floor(menuWidth * (1/listItems)) - 40;
        $('div#new-menu-lower ul li').css('width', itemWidth);
    });
});

问题是 listItems 显示为 38 个项目,它似乎计算出每一个 li 都是错误的。它应该只计算第一个 ul li 而不是子元素。

我能做些什么来阻止这种情况的发生吗?

最佳答案

改变

var listItems = $('div#new-menu-lower ul li').length;

var listItems = $('div#new-menu-lower > ul > li').length;

你需要jQery parent > child 选择器来完成你的工作。

来自 jQuery 文档:

Selects all direct child elements specified by "child" of elements specified by "parent".

As a CSS selector, the child combinator is supported by all modern web browsers including Safari, Firefox, Opera, Chrome, and Internet Explorer 7 and above, but notably not by Internet Explorer versions 6 and below. However, in jQuery, this selector (along with all others) works across all supported browsers, including IE6.

The child combinator (E > F) can be thought of as a more specific form of the descendant combinator (E F) in that it selects only first-level descendants.

关于javascript - 使用jquery计算页面中第一级UL LI的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11227530/

相关文章:

javascript - 更改正文背景颜色。单击以在整个站点范围内应用并在刷新时应用?

jquery - 更改侧边导航以显示在右侧

javascript - 按字母顺序对无序列表进行排序

javascript - 如何在 Typescript 的函数内部调用函数?

Javascript对象值相等测试?

javascript - NodeJS HTTP response.redirect 不存在?

javascript - 如何在脚本中使用 session ?

javascript - getElementsByName() javascript

javascript - 为什么 jQuery 的 .each 在 Safari 中比 Firefox/Chrome 慢得多?

javascript - 从 Bootstrap 选项卡捕获 'shown' 事件