Dos etiquetas html como una sola (enlace/botón)
Pregunta
¿Es posible tener dos elementos (div e innik) y considerarlos como un solo? Por ejemplo: está el siguiente bloque de enlaces:
'<div class="row"><a class="btn" href="http://test.com">Enlace aquí</a></div>'
Y me gustaría que al hacer clic en 'div' o 'button' apareciera <a>el '' como elemento seleccionado en las vistas del editor, pero en el envoltorio, el div como seleccionado.
Respuestas (3)
Deberías crear un componente personalizado
@artf he intentado extender el componente original del enlace, pero parece que no funciona
var linkType = editor. DomComponents.getType('link');
domComps.addType('link', {
model: linkType.model.extend({
defaults: Object.assign({}, linkType.model.prototype.defaults, {
Rasgos: [
{
etiqueta: 'Enlace',
Nombre: 'Href',
Provisional: 'http://meusite.com.br'
},
{
etiqueta: 'Conteúdo',
tipo: 'input-conteudo',
marcador de posición: 'Botão'
},
{
etiqueta: 'Cor',
Tipo: 'color',
Nombre: 'Color de fondo'
}
],
toHTML: function() {
devuelve '<div class="row"><a class="btn">Enlace aquí</a></div>';
},
}),
})
});
No cambia nada...
Ya intenté desactivar el 'autorender' y renderizar después de todos los cambios.
Podría cambiar la configuración de solo contenido con una nueva, usando BlockManager:
bm.get('c85').set({ contenido: '<div class"row"><a class="btn">Enlace aquí</a></div>' });
Pero cuando hago clic en el botón, solo selecciona el botón (no div) y cuando hago clic en div, no selecciona mis ajustes personalizados de botones;
@artf como has dicho, intenté usar Components, pero no obtuve el resultado esperado. ¿Podrías ayudarme?
Mi bloque de enlaces imprime este contenido: '<div style="height:45px;margin:0 auto 10px auto;addding: 5px 5px 5px 5px 5px;width: 100%;text-align:center"><a class="btn btn-purple">Botón</a></div>"
También intento obtener el botón al hacer clic en div, o al hacer clic en el botón de entrar, seleccionar todas las div.
En componentes, probé:
domComps.addType('link', {
model: linkType.model.extend({
defaults: Object.assign({}, linkType.model.prototype.defaults, {
Rasgos: [
{
etiqueta: 'Enlace',
Nombre: 'Href',
Provisional: 'http://mywebsite.com'
},
{
etiqueta: 'Contenido',
Tipo: 'Contenido de entrada',
marcador de posición: 'Botón'
}
]
}),
},{
isComponent: function(el, sec) {
if(el.tagName == 'A'){
return {type: 'link'};
}
Ya intenté devolver siempre el enlace:
return {type: 'link'};
},
})
});
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #921
[PREGUNTA] Selecciona y enfoca un elemento html desde un botón de panel
Hola a todos, ¿Es posible establecer el enfoque en un HTML de sección con Grapes, como un ancla? Tengo un botón de panel y solo selecciona...
Issue #1661
He creado una tabla HTML y no puedo arrastrar nuevos elementos a las celdas de la tabla
Hola. Si creo una tabla HTML con el siguiente bloque de código, todo funciona, puedo dejar una Quote, por ejemplo, en cualquier celda: Pero...
Issue #1290
[BUG]Establecer href para el bloque de enlace no editable una vez inicializado
El #1277 está cerrado pero el problema sigue existiendo, así que tengo que publicar como nuevo número Gracias por la ayuda de antes @maryia...
Issue #1671
[Pregunta] Añadir html una vez que el canvas esté borrado.
Hola Artur Me gustaría añadir algo de código html por defecto cuando los usuarios pulsen el botón de borrar. Por ejemplo, una sección por d...
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.