I am just looking into extending built-in elements for the first time and have some basic questions.
Let's say I want to extend a p
element, assign it a class, and make it contenteditable
. Is the following correct and ready-to-use?
customElements.define('p-edit', pedit, { extends: 'p' });
class pedit extends HTMLParagraphElement {
constructor() {
super();
this.classList.add("foo");
this.setAttribute("contenteditable",true);
}
}
And would that pedit
element be a valid jQuery selector
? And would it be a match if the jQuery selector were 'p[contenteditable="true"]'
?
contenteditable
attribute in theconstructor
is a fine way to do it. And yes, your selector would work. Though you should first define theclass
before callingcustomElements.define
. Be aware that Customizing built-in elements are not supported in Safari. - Emiel Zuurbiertabindex
attribute in thepedit
custom element, how would the tabindex be passed to the constructor when instantiating the element in javascript :document.createElement('pedit', {is: "pedit"})
- Tim$("p.foo")
? Another codepen - Louys Patrice BessettetabIndex
attributes, I guess you will have to loop each elements to set them correctly. - Louys Patrice Bessette