我正在使用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:none
和display:block
。
我找不到关于这个选择器究竟是什么或它是如何工作的任何文档。此外,我的所有不熟悉javascript的同事都被这个选择器使用术语“类”的事实立即抛弃了。他们认为这将指的是一个html元素,它的类等于lang指定的字符串(即class =“greek”)。但是没有“希腊”课程。
我唯一的猜测是,这种语法允许我们访问数据库并检查哪些记录(或书籍对象)具有设置为“lang”的字段或列。这将是一个有用的选择器,能够让我的数据库查询我的数据库的其他东西,如书籍类型,日期等...所以我需要知道发生了什么。任何轻微的解释都会有所帮助。如果您有文档链接,无论基本如何,如果您认为它可以帮助我在Javascript和Django中获得更好的基础,请发送它。
答案 0 :(得分:0)
它是一个css selector,在这种情况下是一个属性选择器,它查找名为class的属性,该属性包含一个希腊字符串。
https://drafts.csswg.org/selectors-3/#selectors
E [foo * =" bar"]一个E元素,其中" foo"属性值包含 子串" bar"
因此,使用lang传递时显示的代码,.not()
行会隐藏任何不包含greek
的元素。下一行显示其中包含greek
的所有元素。
如果当前没有class=greek
的元素,则代码是动态的并不重要。意思是代替硬编码例如希腊语,你可以在lang中传递希腊语,只会显示出来。或者,如果您将其更改为英国,则只显示英国元素而无需更改实际的js代码。