## jQuery.escapeSelector() Method
The `jQuery.escapeSelector()` method is a built-in utility function designed to escape any characters that have a special meaning in a CSS selector.
In HTML, it is technically legal to use characters like periods (`.`), colons (`:`), hashes (`#`), or spaces within element IDs and class names. However, in CSS selectors, these characters are interpreted as syntax delimiters (e.g., `.` for classes, `#` for IDs). `jQuery.escapeSelector()` ensures that these characters are treated as literal parts of the identifier rather than CSS operators.
---
## Syntax
```javascript
jQuery.escapeSelector( selector )
```
*Alternatively, you can use the shorthand alias:*
```javascript
$.escapeSelector( selector )
```
### Parameters
| Parameter | Type | Description |
| :--- | :--- | :--- |
| `selector` | `String` | The string containing the CSS selector expression that needs to be escaped. |
### Return Value
* **Type:** `String`
* **Description:** Returns the escaped string, which can be safely used in a CSS selector.
---
## Key Features & Version Support
* **Introduced in:** jQuery 3.0.
* **Cross-Browser Compatibility:** Works reliably across all jQuery-supported browsers.
* **Use Case:** Extremely useful when dealing with dynamically generated IDs or class names that contain special CSS characters (such as `.`, `:`, `#`, `[`, `]`, etc.).
---
## Code Examples
### Example 1: Escaping an ID containing a Hash (`#`) character
If you have an element with an ID that literally contains a `#` symbol (e.g., `id="#target"`), a standard jQuery selector like `$('##target')` will fail because the CSS engine gets confused by the double hashes.
Here is how you can use `$.escapeSelector()` to resolve this:
```html
This paragraph has an ID of "#target"
This span has an ID of "target"
```
### Example 2: Escaping a Class Name containing a Period (`.`)
If an element has a class name that contains a dot (e.g., `class="my.box"`), CSS will interpret `.my.box` as an element that has both the class `my` and the class `box`. To target the literal class `my.box`, you must escape the dot.
```html
This box has a class name containing a dot (my.box)
This box has two separate classes (my and box)
```
---
## Important Considerations
1. **Native Alternative:** Modern browsers support the native JavaScript equivalent: `CSS.escape()`. However, `jQuery.escapeSelector()` is recommended if you need to support older browsers that do not implement the native `CSS.escape()` API.
2. **Only Escape the Identifier:** Do not pass the entire selector string (like `div > .my.class`) into `$.escapeSelector()`. It will escape the structural characters (like `>` and spaces) as well, rendering the selector invalid. Only pass the specific class name, ID, or attribute value that contains the special characters.