我最近浏览了一个网站,检查了它的功能。我访问了他们的主javascript文件并完成了这段代码。
var featureIconHolder = $(".feature-icon-holder", "#features-links-holder");
featureIconHolder.on("click",function(){
featureIconHolder.removeClass("opened");
$(this).addClass("opened");
$(".show-details","#features-holder").removeClass("show-details");
$(".feature-d"+$(this).data("id"), "#features-holder").addClass("show-details");
});
我无法理解他是如何一次在一个变量中存储两个东西的。还有什么是
$(this).data("id") . 请有人给我详细解释一下这个代码好吗。提前谢谢。
最合适的回答,由SO网友:Rup 整理而成
您的具体问题:
var featureIconHolder = $(".feature-icon-holder", "#features-links-holder");
以下是文档链接:
http://api.jquery.com/jQuery/#jQuery1<这里的两个参数是选择器和上下文。这样做的目的是查找类的所有元素
feature-icon-holder
是ID为的元素的后代
features-links-holder
. 这将构造一个类似数组的对象,该对象包含0多个元素,具体取决于匹配的元素数量。
什么是$(this).data("id")
在单击处理程序中,this
是已单击的元素。所以$(this)
是该元素的jQuery对象,并且.data
读取或存储元素的值。然后通过串联字符串来构造另一个选择器。
这会根据单击的图标更改显示的“功能”。其作用:
查找具有类的所有元素feature-icon-holder
ID为的元素内部feature-links-holder
.在所有这些元素上设置单击处理程序:从所有这些图标中删除“opened”类,即从以前打开的元素中清除“opened”。打开的类可能是图标周围的一个亮点在该图标上设置“opened”类,可能会高亮显示它清除ID中任何元素的“show details”类feature-holder
当前具有类的;同样,可能只有其中之一,当前显示的功能将“show details”类添加到其中的元素中feature-holder
其类名与单击图标时存储的ID相匹配。这可能会在页面的其他地方显示该功能