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

207
Vistas
¿Por qué querySelector no funciona con v-for?

Tengo un div simple con un bucle v-for que muestra elementos en una página. Estos elementos tienen una class que me gustaría seleccionar usando el método querySelector de Javascript.

 <div class="product-feed"> <div v-for="Product in ProductFeed" :key="Product.ProductID" class="product-item" > <Product-Vue-Component :Product="Product"></Product-Vue-Component> </div> </div> <script> ... setup() { async function loadFeed(){ await nextTick(); let element1 = document.querySelector('.product-feed'); console.log(`element1`, element1) // this works and displays the element let element2 = document.querySelector('.product-item:last-of-type'); console.log(`element2`, element2) // this comes back as null } } onMounted(()=> { loadFeed(); }) } ... </script>

Aunque estoy esperando que el DOM se renderice usando nextTick() , la función loadFeed() no puede seleccionar ningún elemento que esté en el bucle v-for .

Necesito detectar elementos en el bucle v-for para poder implementar una función de desplazamiento infinito en la que se carguen más elementos a medida que el usuario se desplaza hasta el final de la lista de elementos .product-item (por lo tanto, :last-of-type pseudo selector)

¿Dónde está fallando y es posible seleccionar elementos de esta manera?

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

0

Intente establecer ref en div con class="product-item"

 <div ref="el" v-for="Product in ProductFeed" :key="Product.ProductID" class="product-item" >

luego en la función de configuración:

 const el = ref(null) onMounted(() => { loadFeed() }) async function loadFeed(){ await nextTick(); let element1 = document.querySelector('.product-feed'); console.log(`element1`, element1) // this works and displays the element console.log(el.value) } } return {el}
about 4 years ago · Juan Pablo Isaza Denunciar

0

Por favor, use refs para eso, simplemente agregue el atributo ref al contenedor ref="productFeed" y obtenga este elemento con

 import { ref } from 'vue' ... const productFeed = ref(null) ... return { productFeed }

Luego puede usar productFeed.value como una variable, que contiene el elemento dom

about 4 years ago · Juan Pablo Isaza Denunciar

0

Intenta usar referencias como esta:

 <div v-for="Product in ProductFeed" :ref="`product--${Product.id}`"> </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