无法理解此jQuery代码

时间:2019-03-15 作者:Raashid Din

我最近浏览了一个网站,检查了它的功能。我访问了他们的主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") . 请有人给我详细解释一下这个代码好吗。提前谢谢。

1 个回复
最合适的回答,由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.feature-holder 当前具有类的;同样,可能只有其中之一,当前显示的功能将“show details”类添加到其中的元素中feature-holder 其类名与单击图标时存储的ID相匹配。这可能会在页面的其他地方显示该功能

相关推荐

主页加载了许多不必要的jQuery-UI文件

为了加快加载时间,我尽量避免不必要的加载。在Google报告(以及我的html)中,我看到jquery迁移时加载了许多不需要的文件。min.js?ver=1.4.1、core min、mouse min、button min、widget min等。我确信我不需要或不使用它们,但它们会导致(其中)很糟糕的装载时间。我用的是主题2017。我应该如何避免加载这些jquery min文件?网站:www.vakantiehuisverhuur.eu.RegardsRudolph Smits,NL