我想对我正在从事的项目之一实现 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/