jquery attr add id to existing element

六月ゝ 毕业季﹏ 提交于 2019-12-24 00:57:03

问题


I have a bunch of imgs inside a div with a class on them, in my JS I have a for loop that re-sizes the images to fir inside a box without stretching

$('.gallery img')[i].attr('id', 'img' + i);

This is what I tried to get each img to have its own id like 'img1' 'img2' 'img3' etc

but it seems to not work


回答1:


Replace your for loop with:

$('.gallery img').each(function(i) {
    $(this).attr('id', 'img' + i);
    // You can also add more code here if you wish to manipulate each IMG element further
});

This block of code loops through each IMG element with a counter i incrementing after every instance, and this counter is suffixed to the id string.




回答2:


when you do:

$('.gallery img')[i]

it returns the DOMObject and not a jQuery object. you will need to use .eq() to return the jQuery element at i:

$('.gallery img').eq(i).attr('id', 'img' + '"' + i + '"');

NOTE however, it looks like you are trying to include " as part of the id name. Unfortunately, single quotes and double-quotes are not valid characters for an ID name. see What are valid values for the id attribute in HTML?




回答3:


Use the each() method provides on the returned jQuery object. It iterates over the elements in the returned set. The each method takes a callback function that will be invoked on each element in the jQuery object. The each method is passed the index of each element in the jQuery object as its first argument and the element itself as its second argument.

This would work:

$('.gallery img').each(function(index, elem) {
  $(this).attr('id', 'img' + index);
});


来源:https://stackoverflow.com/questions/23072767/jquery-attr-add-id-to-existing-element

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!