> For the complete documentation index, see [llms.txt](https://ivory-docs.gitbook.io/ivory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ivory-docs.gitbook.io/ivory/how-to-guides/code-refactoring.md).

# Code Refactoring

Find and replace code patterns across your property

Update code patterns across multiple rules. Common use case: removing jQuery.

## Scenario

jQuery is no longer loaded on your site. Rules using jQuery syntax break:

```javascript
// These no longer work
jQuery(document).ready(function() { ... });
jQuery(this).text();
jQuery('#element').attr('href');
```

Replace with vanilla JavaScript equivalents.

## Steps

### 1. Find Affected Components

Search for the pattern:

1. Enter `jQuery` in search
2. Filter by type if needed
3. Review results

### 2. Add to Workspace

Select all affected rules and click **Add to Workspace**. Ivory can see exactly what needs changing.

### 3. Batch Update

Click **Batch Update** and enter:

```
Replace all jQuery code with vanilla JavaScript equivalents:
- jQuery(document).ready() → DOMContentLoaded event listener
- jQuery(this).text() → this.textContent
- jQuery(element).attr('href') → element.getAttribute('href')
- jQuery(selector) → document.querySelector(selector)
Keep the same logic, just remove jQuery dependency.
```

### 4. Review Changes

Each rule shows before/after:

**Before:**

```javascript
jQuery(document).ready(function() {
  var text = jQuery(this).text();
});
```

**After:**

```javascript
document.addEventListener('DOMContentLoaded', function() {
  var text = this.textContent;
});
```

Review each change. Approve individually or approve all.

## Common Replacements

| jQuery                       | Vanilla JavaScript                                  |
| ---------------------------- | --------------------------------------------------- |
| `jQuery(document).ready(fn)` | `document.addEventListener('DOMContentLoaded', fn)` |
| `jQuery(selector)`           | `document.querySelector(selector)`                  |
| `jQuery(el).text()`          | `el.textContent`                                    |
| `jQuery(el).html()`          | `el.innerHTML`                                      |
| `jQuery(el).attr('x')`       | `el.getAttribute('x')`                              |
| `jQuery(el).val()`           | `el.value`                                          |
| `jQuery(el).find(sel)`       | `el.querySelector(sel)`                             |
| `jQuery(el).parent()`        | `el.parentElement`                                  |

## Other Refactoring Use Cases

**Update tracking variable:**

```
Change all instances of eVar10 to eVar15
```

**Fix deprecated methods:**

```
Replace s.tl() calls with the new sendEvent() syntax
```

**Standardize naming:**

```
Rename all rules starting with "AA -" to start with "Analytics -"
```
