(from Planet Web 2.0) cssQuery() is a new JavaScript library developed by Dean Edwards (a well-known developer of IE7 scripts). It is based on the Document Object Model (DOM) and allows you to use the CSS selector syntax to get references to document elements. DOM is a powerful and efficient API for reading, writing, and modifying HTML and XML documents. When used in conjunction with JavaScript, it is the basis for the DHTML effect. However, sometimes it can require a lot of code. Consider this little snippet, which comes from the table sorting script we use on SitePoint:
function sortables_init() { // 查找所有具有 sortable 類的表格并使其可排序 if (!document.getElementsByTagName) return; tbls = document.getElementsByTagName("table"); for (ti=0; ti < tbls.length; ti++) { thistbl = tbls[ti]; ts_makesortable(thistbl); } }
This code is good, but it actually just calls the ts_makeSortable function to every table element that applies the sortable class. Here is the code using cssQuery():
function sortables_init() { // 查找所有具有 sortable 類的表格并使其可排序 tbls = cssQuery("table.sortable"); for (ti=0; ti < tbls.length; ti++) { ts_makesortable(tbls[ti]); } }
In typical DHTML scripts, the resulting code savings are amazing. Of course, you'll sacrifice some performance, as your CSS selector has to be parsed and interpreted in pure JavaScript, but so far few JavaScript applications have overwhelmed the browser.
cssQuery() supports all CSS1 and CSS2 selectors, as well as many CSS3 selectors. This is even better than most current web browsers – and it’s written entirely in pure JavaScript!
Update:
Simon Willison created a similar library in March 2003 getElementsBySelector(). It doesn't support that many CSS selector types, but it may contain most of the features you need in your daily use. Therefore, it may be lighter.
FAQs about CSS Query
What is CSS Query and how does it work?
CSS Query, also known as the CSS selector, is a powerful tool in web development for selecting and manipulating HTML elements based on the id, class, type, attribute, etc. It works by applying a specific style to elements that match the specified selector. This enables developers to easily create dynamic and interactive web pages. CSS Query is widely used in JavaScript for DOM operations and to find elements in testing tools such as Selenium.
How to use CSS Query to select elements based on attributes?
CSS Query allows you to select based on the attributes of the element using square brackets []. For example, to select all elements with a specific attribute, you can use the syntax: element[attribute]. To select an element with a specific attribute value, you can use the syntax: element[attribute="value"]. This feature is especially useful when you want to style elements with specific attributes in different ways.
Can I select multiple elements using CSS Query at once?
Yes, CSS Query allows you to select multiple elements at once using a comma. For example, syntax: h1, h2, h3 {color: red} will select all h1, h2, and h3 elements and apply a red color to them. This feature is useful when you want to apply the same style to multiple elements.
How to use CSS Query to select child elements?
CSS Query allows you to select child elements using the > operator. For example, syntax: div > p will select all p elements as direct child elements of the div element. This is useful when you want to distinguish the style of a child element from the style of a parent element.
Can I use CSS Query to select based on the state of an element?
Yes, CSS Query allows you to use pseudo-classes to select based on the state of an element. For example, syntax: a:hover {color: red} will select them when hovering over all a elements and apply a red color to them. This feature is very useful for creating interactive web pages.
How to use CSS Query to select sibling elements?
CSS Query allows you to select sibling elements using the operator. For example, syntax: div p will select the p element immediately following the div element. This feature is useful when you want to style elements based on where they are in an HTML document.
Can I use CSS Query to select based on where the element is in the HTML document?
Yes, CSS Query allows you to use pseudo-classes such as :first-child, :last-child, and :nth-child(n) to select based on where the element is in the HTML document. For example, syntax: p:first-child {color: red} will select the first p element and apply a red color to it. This feature is useful for creating dynamic and interactive web pages.
How to use CSS Query to select based on the type of element?
CSS Query allows you to use element types as selectors to select based on the type of element. For example, syntax: p {color: red} will select all p elements and apply a red color to them. This feature is useful when you want to style all elements of a specific type in the same way.
Can I use CSS Query to select based on the element's class or id?
Yes, CSS Query allows you to use the . operator to select based on the element's class and use the # operator to select based on the element's id. For example, syntax: .class {color: red} will select all elements with class "class" and apply a red color to it. Similarly, syntax: #id {color: red} will select the element with id "id" and apply a red color to it. This feature is useful when you want to distinguish the style of a specific element from the style of other elements.
How to use CSS Query to select elements that do not match a specific selector?
CSS Query allows you to use the :not() pseudo-class to select elements that do not match a specific selector. For example, syntax: p:not(.class) {color: red} will select all p elements that do not have class "class" and apply a red color to it. This feature is useful when you want to style all elements except the elements that match a specific selector.
The above is the detailed content of cssQuery(): query the DOM with CSS selectors. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

JavaScriptisidealforwebdevelopment,whileJavasuitslarge-scaleapplicationsandAndroiddevelopment.1)JavaScriptexcelsincreatinginteractivewebexperiencesandfull-stackdevelopmentwithNode.js.2)Javaisrobustforenterprisesoftwareandbackendsystems,offeringstrong

In JavaScript, choosing a single-line comment (//) or a multi-line comment (//) depends on the purpose and project requirements of the comment: 1. Use single-line comments for quick and inline interpretation; 2. Use multi-line comments for detailed documentation; 3. Maintain the consistency of the comment style; 4. Avoid over-annotation; 5. Ensure that the comments are updated synchronously with the code. Choosing the right annotation style can help improve the readability and maintainability of your code.

Yes,JavaScriptcommentsarenecessaryandshouldbeusedeffectively.1)Theyguidedevelopersthroughcodelogicandintent,2)arevitalincomplexprojects,and3)shouldenhanceclaritywithoutclutteringthecode.

Java and JavaScript are different programming languages, each suitable for different application scenarios. Java is used for large enterprise and mobile application development, while JavaScript is mainly used for web page development.

JavaScriptcommentsareessentialformaintaining,reading,andguidingcodeexecution.1)Single-linecommentsareusedforquickexplanations.2)Multi-linecommentsexplaincomplexlogicorprovidedetaileddocumentation.3)Inlinecommentsclarifyspecificpartsofcode.Bestpractic

CommentsarecrucialinJavaScriptformaintainingclarityandfosteringcollaboration.1)Theyhelpindebugging,onboarding,andunderstandingcodeevolution.2)Usesingle-linecommentsforquickexplanationsandmulti-linecommentsfordetaileddescriptions.3)Bestpracticesinclud

JavaScripthasseveralprimitivedatatypes:Number,String,Boolean,Undefined,Null,Symbol,andBigInt,andnon-primitivetypeslikeObjectandArray.Understandingtheseiscrucialforwritingefficient,bug-freecode:1)Numberusesa64-bitformat,leadingtofloating-pointissuesli

JavaScriptispreferredforwebdevelopment,whileJavaisbetterforlarge-scalebackendsystemsandAndroidapps.1)JavaScriptexcelsincreatinginteractivewebexperienceswithitsdynamicnatureandDOMmanipulation.2)Javaoffersstrongtypingandobject-orientedfeatures,idealfor
