tengo una etiqueta de video que uso para un chat p2p, la etiqueta se ve así
<div id="secondary-user"> <video id="their-video" data-peer="0" autoplay loop autobuffer muted playsinline controls></video> </div>configuro el chat entre pares de datos dinámicamente cuando el chat comienza con una identificación específica del usuario remoto (par)
function start_chat( remote_user_id , stream){ $('#their-video').data('peer' , remote_user_id ); // add stream }quiero detener la transmisión de esa etiqueta de video específica
function stop_chat( remote_user_id ){ let player = $(`#their-video[data-peer="${remote_user_id }"]`) ; //stop the stream }el problema es que el selector no puede encontrar el elemento aunque puedo ver que el par de datos está configurado correctamente
la razón por la que no quiero usar solo id como selector es que a veces la transmisión se reemplaza por una nueva antes de que pueda llamar a stop_chat y no quiero detener la nueva transmisión... por lo que es importante usar data-peer en el selector
aquí está la salida para
console.log(player.length); console.log(player); como @Toufiq Ahmed dijo que usar attr para establecer el valor resolvió el problema ... me pregunto por qué.
Traté de recrear este $('#their-video').data('peer' , remote_user_id ); y descubrió que la función de datos no crea un atributo en el elemento. use la función jquery attr en su lugar. para configurar $('#elemnt').attr('data-peer', 'value') y para usar $('#elemnt').attr('data-peer')
de esta manera su $( #their-video[data-peer="${remote_user_id }"] ); funciona bien