Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

156
Vistas
¿Cómo ejecutar una función cada vez que se hace clic en etiquetas de anclaje desconocidas en Vue.js 3?

Tengo un div con v-html que muestra datos de una base de datos:

<div id="Content" v-html=" ${Contenido} "></div>

Dentro del ${Content} que se presenta, puede haber cualquier número a etiquetas con enlaces a otras páginas externas. Necesito analizarlos y luego agregar un controlador @click a cada uno de ellos. Un ejemplo sería:

<p>Calm down, Marty, I didn't disintegrate anything. The <a href="example.com/m">molecular structure</a> of Einstein and the car are completely intact. They wanted me to build them a bomb, so I took their <a href="example.com/d">plutonium</a> and in turn gave them a shiny bomb case full of used pinball machine parts.

Para transformarse en esto:

<p>Calm down, Marty, I didn't disintegrate anything. The <a @click="validateLink()" href="example.com/m">molecular structure</a> of Einstein and the car are completely intact. They wanted me to build them a bomb, so I took their <a @click="validateLink()" href="example.com/d">plutonium</a> and in turn gave them a shiny bomb case full of used pinball machine parts.

O, alternativamente, simplemente instruya a Vue.js para que ejecute validateLink() cada vez que se haga clic en a etiqueta dentro de la div id="Content" .

Puedo obtener todas las etiquetas a dentro del div así:

 const AnchorTags = document.getElementById('Content').getElementsByTagName('a');

Pero no sé cómo hacer que la función validateLink() se ejecute al hacer clic en estas etiquetas.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El contenido de v-html se trata como HTML simple: no puede colocar directivas de Vue dentro.

Afortunadamente para usted, este problema específico se puede resolver fácilmente mediante la delegación de eventos, por ejemplo, adjuntando el controlador al elemento principal + inspeccionando el elemento de destino (clic)...

 const app = Vue.createApp({ data() { return { html: `<p>Calm down, Marty, I didn't disintegrate anything. The <a href="example.com/m">molecular structure</a> of Einstein and the car are completely intact. They wanted me to build them a bomb, so I took their <a href="example.com/d">plutonium</a> and in turn gave them a shiny bomb case full of used pinball machine parts.` } }, methods: { onClick(ev) { if(ev.target.tagName === 'A') { console.log('Anchor clicked -', ev.target.href) } } } }) app.mount('#app')
 <script src="https://unpkg.com/vue@3.2.2/dist/vue.global.js"></script> <div id='app'> <div v-html="html" @click.stop.prevent="onClick"> </div> </div>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda