Jquery: Acessar atributo de link de dados

Eu quero obter atributo de link de dados formar um clique da imagem.

A seguir, minha tag de imagem

   

para obtê-lo clique aqui é o que eu estou fazendo,

  $(".aclick").click(function (e) { e.preventDefault(); alert($(this).attr("data-link")); var link = $(this).data("data-link");// tried both console.log(link); });  

Quando tento logar ou alertá-lo, fico indefinido Por favor me ajude como posso consertá-lo

Abaixo está o trecho de código para ajudá-lo. O atributo data-link está na tag img e não na tag ‘a’.

 $(".aclick").click(function (e) { e.preventDefault(); alert($(this).find('img').attr("data-link")); }); 
     

O motivo pelo qual você não está obtendo um valor é que você está obtendo o atributo de link de dados da tag de âncora, pois é isso que representa isso. Se você encontrar a imagem do filho, receberá o link de dados. Aqui está um violino do trabalho.

  

Você pode tentar isso

  

No contexto, $(this) refere-se ao link, não à imagem.

Para obter a imagem, use:

 var link = $('img', $(this)).data('link'); 

Isso obtém o elemento img dentro do link (que é $(this) ).

Leia mais sobre o .data() aqui: https://api.jquery.com/data/
Na minha opinião, isso é um pouco mais limpo do que usar o método .attr() .

Você atribui seu atributo de link de dados na tag img,

então você tem que escrever o evento click na tag img

  $(".aclick img").click(function (e) { e.preventDefault(); alert($(this).data("link")); var link = $(this).data("link"); console.log(link); }); 
     

O evento click também deve estar na tag de imagem.

  

violino de trabalho

  $(".aclick img").click(function (e) { e.preventDefault(); alert($(this).attr("data-link")); var link = $(this).attr("data-link");// tried both console.log(link); }); 
     

Img é o elemento filho de a . $(this).children('img') tente com $(this).children('img') . E use o uso com data('link') vez de data('data-link')

 $(".aclick").click(function(e) { e.preventDefault(); alert($(this).children('img').attr("data-link")); var link = $(this).children('img').data("link"); // tried both console.log(link); }); 
     

isso se refere à tag de âncora e não à tag de imagem. usa isto

 $('.aclick img').attr("data-link"); 

Em (.aclick).click() data-link retornará undefined , o data-link está na imagem, obtém a imagem usando .find ()

O método find () retorna elementos descendentes do elemento selecionado.

Para obter o valor dos dados * use .data ()

Os atributos data- * são usados ​​para armazenar dados personalizados privados na página ou no aplicativo.

.data () Armazena dados arbitrários associados aos elementos correspondentes ou retorna o valor no armazenamento de dados nomeado para o primeiro elemento no conjunto de elementos correspondentes.

 $(".aclick").click(function (e) { e.preventDefault(); var link = $(this).find('img').data('link'); console.log(link); });