(Django/Javascript/SQLite3):这个"class*="选择器是如何工作的?它有什么作用



我正在Django中开发一个Web开发项目,该项目使用希腊语和拉丁语文本数据库。这是由多个人完成的,但是我正在接受这个项目。不过,我有Django和Javascript的入门经验,虽然我已经能够学到很多新东西,但我仍然有这样的问题。

因此,请查看我们 main.js 文件中的这些代码行。

// Hide all text/book elements NOT part of the selected language:
books.not("[class*='" + lang + "']").css("display", "none");
// Show all which are part of the selected language:
books.filter("[class*='" + lang + "']").css("display", "block");
//What if I had a function that took books as an arg, and then app

事实上,我只是不知道这个词在语法上发生了什么,"[class*=]".但是,我已经了解了 .filter() 和 .not() 方法以及 .css() 方法的作用。

但是,这两行代码似乎完成了一些重要的事情。他们能够确定哪些书籍对象采用lang变量(字符串)指定的语言。 必要时应用display:nonedisplay:block

我只是找不到任何关于这个选择器到底是什么或它是如何工作的文档。此外,我所有不熟悉javascript的同事都立即被这个选择器使用术语"类"的事实所抛弃。他们认为这将是指一个 html 元素,该元素的类等于 lang 指定的字符串(即.class="希腊语")。但是没有"希腊"类。

我唯一的猜测是,这种语法允许我们访问数据库并检查哪些记录(或书籍对象)的字段或列设置为"lang"。这将是一个有用的选择器,可以让 Javascript 查询我的数据库以获取其他内容,如书籍类型、日期等......所以我需要知道发生了什么。任何轻微的解释都会有所帮助。如果你有指向文档的链接,无论多么基本,如果你觉得它会帮助我在Javascript和Django中获得更好的基础,请发送它。

它是一个 CSS 选择器,在本例中是一个属性选择器,用于查找名为 class 的属性,其中包含希腊语的子字符串。

https://drafts.csswg.org/selectors-3/#selectors

E[foo*="bar"] 一个 E 元素,其 "foo" 属性值包含 子字符串"条">

因此,使用您在传递 lang 时显示的代码,.not()行隐藏了不包含greek的任何元素。下一行显示所有包含greek的元素。

如果当前没有元素class=greek代码是动态的,这并不重要。意思是,而不是硬编码,例如希腊语,你可以只在lang中传递希腊语,只有这样才会显示。或者,如果说您将其更改为英国,则只会显示英国元素,而无需更改实际的js代码。

相关内容

最新更新