How to get value from inside <li> element and put it in image attribute tag using jQuery

I want to get a value from an H3 element and put it in an image attribute such as title and alt. see my code below.

$('ul.products').each(function() {
  $(this).find('li h3').each(function() {
    var current = $(this);
    if (current.children().size() > 0) {
      return true;
    }
    console.log($(this).text());
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="products">
  <li>
    <a href="#">
      <img src="/path/" title="(Get value from h3)" alt="(Get value from h3)">
    </a>
    <h3>Mytitle1</h3> 
  </li>
  <li>
    <a href="#">
      <img src="/path/" title="(Get value from h3)" alt="(Get value from h3)">
    </a>
    <h3>Mytitle2</h3> 
  </li>
  <li>
    <a href="#">
      <img src="/path/" title="(Get value from h3)" alt="(Get value from h3)">
    </a>
    <h3>Mytitle3</h3> 
  </li>
</ul>
Run code
+4
source share
4 answers

$(function() {
  $('.products li').each(function() {
    var item = $(this);
    var text = item.find('h3').text();
    
    item.find('img').attr({
      'title': text,
      'alt': text
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="products"> 
    <li> 
        <a href="#"><img src="/path/" title="(Get value from h3)" alt="(Get value from h3)"> </a> 
        <h3>Mytitle1</h3> 
    </li>
	<li> 
    	<a href="#"><img src="/path/" title="(Get value from h3)" alt="(Get value from h3)"> </a> 
    	<h3>Mytitle2</h3> 
    </li> 
    <li> 
        <a href="#"><img src="/path/" title="(Get value from h3)" alt="(Get value from h3)"> </a> 
        <h3>Mytitle3</h3> 
    </li> 
</ul>
Run code
0
source

Try the following:

$(".products li").each(function() { // loop through all the li
  var txt = $(this).find("h3").text(); // find the h3 tag and get its  text
  $(this).find("img").attr("title",txt); // set title of image
  $(this).find("img").attr("alt",txt); // set alt of image
});
0
source

Try:

$('ul.products').each(function(){
    $(this).find('li h3').each(function(){//loop the h3
          $(this).prev('a').find('img').attr({'title':$(this).text(),'alt':$(this).text()});//get the image usin prev and find add the atributes to it
    });

});

0

prev, a find, img, attr,

 $(this).prev('a').find('img').attr({
              'title':_getText,
              'alt':_getText
              }) 

jsfiddle

0

All Articles