javascript - "$()"选择器中额外的 "$($())"有什么作用?

标签 javascript jquery html

我想对我正在从事的项目之一实现 jQuery scrollspy。

我找到了这个 jsfiddle ( https://jsfiddle.net/mekwall/up4nu/ ),我设法将其实现到我的项目中。我想对其进行修改,但一直无法理解这段代码的含义。

var topMenu = $("#top-menu"),
menuItems = topMenu.find("a"),
   // Anchors corresponding to menu items
   scrollItems = menuItems.map(function(){
     var item = $($(this).attr("href"));
     if (item.length) { return item; }
});

我知道一般情况下,代码将搜索所有“a”链接,通过 attr() 函数找到 href,如果存在,将其添加到 map 中。我不明白的是

 $($(this).attr("href"));

额外的 $() 选择器是什么意思?我明白了

$(this).attr("href");

表示选择/检索此元素的 href。 $() 有什么作用?它是嵌套选择器吗?我尝试使用谷歌搜索,但找不到答案,或者我的 google-fu 达不到标准。

还有,是吗

$($(this).attr("href"));

只检索以下格式的链接 index.html#section-one 或 #section-one?

更新

此外,“.length”如何确定该元素是否存在于 DOM 中?当我检查控制台日志时,带有“index.html#section-one”的 href 链接将返回长度为 0,而只有“#section-one”的 href 链接将返回长度为 1。为什么会这样?

最佳答案

该代码假定 href 属性将成为 id 引用,如 #about。外部 $() 继续为您获取 #about 元素。

关于javascript - "$()"选择器中额外的 "$($())"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32064952/

相关文章:

javascript - Bootstrap 4 CSS 与我的自定义下拉选择器冲突

javascript - JS/jQuery : Best way to get typed characters after '#' in textarea

javascript - 在 JavaScript 中获取动态行的特定列值

html - 在伪元素上堆叠 div、z-index 和 box-shadow

javascript - ajax 成功时重置所有字段(表单)

javascript - 使用 React.JS 向容器填充内容

javascript - 获取表中所有没有字段的记录

javascript - 单击过滤列表/ View

html - 水平翻转html和css

HTML/CSS - 使背景适合任何窗口大小