Establishing Clear Guidelines for Event Delegation
Create protocols for implementing event delegation to enhance code efficiency and user experience in your applications.
0 likes
19 views
Rule Content
{ "title": "Establishing Clear Guidelines for Event Delegation", "description": "Create protocols for implementing event delegation to enhance code efficiency and user experience in your applications.", "category": "JavaScript Cursor Rules", "rules": [ { "id": "event-delegation-parent-selection", "description": "Attach event listeners to the closest stable parent element that encompasses all target child elements to ensure efficient event handling.", "severity": "warning", "pattern": "document\\.querySelector\\(.*\\)\\.addEventListener\\(.*\\)", "fix": "Identify a common ancestor element and attach the event listener to it instead of individual child elements." }, { "id": "event-delegation-target-validation", "description": "Validate the event target using specific selectors to ensure the event originated from the intended child element.", "severity": "warning", "pattern": "event\\.target\\.matches\\(.*\\)", "fix": "Use 'event.target.matches()' or 'event.target.closest()' to accurately identify the target element." }, { "id": "event-delegation-throttling", "description": "Implement throttling or debouncing for events that fire frequently, such as 'scroll' or 'resize', to enhance performance.", "severity": "warning", "pattern": "addEventListener\\(\\s*['\"](scroll|resize)['\"]\\s*,\\s*function\\s*\\(.*\\)\\s*{", "fix": "Wrap the event handler in a throttling or debouncing function to limit the rate at which the handler is executed." }, { "id": "event-delegation-avoid-over-delegation", "description": "Avoid delegating too many events to a single parent element, as it can lead to inefficient event handling and maintenance challenges.", "severity": "warning", "pattern": "document\\.addEventListener\\(.*\\)", "fix": "Delegate events to the nearest common ancestor of the target elements rather than the document to improve performance and maintainability." }, { "id": "event-delegation-dynamic-content", "description": "Ensure event delegation accounts for dynamically added elements to maintain consistent event handling.", "severity": "warning", "pattern": "parentElement\\.addEventListener\\(.*\\)", "fix": "Use event delegation on a stable parent element to handle events for both existing and dynamically added child elements." } ] }