Cómo podemos eliminar el componente seleccionado html
Puedes hacer algo así '''js componente const = editor.getSelected(); const coll = component.collection; const at = coll.indexOf(component); coll.remove(componente); return coll.add('<div>Contenido nuevo</div>', { at }); ```
Lee la respuesta completa abajo ↓Pregunta
Hola artf,
Por favor, háganos saber cómo podemos eliminar el componente HTML seleccionado como Tengo un botón html y cuando selecciono esa clase "gjs-comp-selected" aparece añadida <button class="add_col_btn gjs-comp-selected" id="ir9j">Añadir nueva columna</button>
Quiero eliminar este botón html y reemplazarlo por contenido nuevo en un evento concreto. Por favor, ayúdanos a saber cómo podemos eliminar el componente seleccionado.
Respuestas (3)
Puedes hacer algo así '''js componente const = editor.getSelected(); const coll = component.collection; const at = coll.indexOf(component); coll.remove(componente); return coll.add('<div>Contenido nuevo</div>', { at });
Esto me ha ayudado mucho a eliminar componentes programáticamente y solo quiero añadir un código de ejemplo en Typescript para más referencia.
Ejemplo de Typescript: Eliminar dinámicamente componentes
Se han retirado todos los componentes que...
- .. tener un nombre de etiqueta = exampletag
- .. tienen un atributo = exampleattr
/**
* Elimina todos los componentes del editor que tienen la etiqueta 'exampletag' y contienen el atributo 'exampleattr'.
*/
clearComponentsFromEditor(): void {
sea allComponents = this.editor.getComponents();
let componentsToBeRemoved = allComponents.filter(
componentModel => (
componentModel.attributes['tagName'] == 'exampletag' && null != componentModel.attributes.attributes['exampleattr'])
);
for(let comp of componentsToBeRemoved) {
if(null != comp & & null != comp.collection)
comp.collection.remove(comp);
}
}
Hola artf,
Gracias por el mensaje y el código proporcionado funciona bien, pero me está saliendo el siguiente error:
Uncaught TypeError: No se puede leer la propiedad 'indexOf' de undefined en HTMLDivElement. <anonymous> (template.js?1.15:3784) at HTMLDivElement.dispatch (jquery.min.js:5) at HTMLDivElement.v.handle (jquery.min.js:5) en ZoneDelegate.webpackJsonp.../.. /.. /.. /zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421) en Zone.webpackJsonp.../.. /.. /.. /zone.js/dist/zone.js.Zone.runTask (zone.js:188) en ZoneTask.webpackJsonp.../.. /.. /.. /zone.js/dist/zone.js.ZoneTask.invokeTask [como invoke] (zone.js:496) en invokeTask (zone.js:1517) en HTMLDivElement.globalZoneAwareCallback (zone.js:1543)
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #740
Cómo eliminar una clase de HTML
Hola @artf, Estamos actualizando la <i> clase de etiquetas, pero añade una nueva clase a esta, aunque la clase anterior no se elimina. Por...
Issue #821
Cómo configurar el atributo href
Hola @artf, Por favor, háganos saber cómo podemos establecer el atributo href de anchor dentro de div cuando se arrastra elemento, es decir...
Issue #1061
Cómo podemos mostrar rasgos de cuenta atrás
Hola artf, Por favor, háganos saber cómo conseguimos que los elementos de cuenta atrás estén en modo edición, cuando establecemos la planti...
Issue #1111
Cómo añadir la clase madre al arrastrar el elemento
Hola @artf, Espero que estés bien. Por favor, háganos saber cómo podemos añadir la clase madre de div cuando se arrastra un nuevo elemento...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.
Explora plugins gratuitos →Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.
Explora plugins premium →Tutoriales relacionados
Guías detalladas sobre el mismo tema.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.