By writing $('.offer-list li .img a')[k], you will get the actual HTML element with index k, not c jQuery. I think your problem is caused by this.
Try this code.
$('.offer-list li .img a').eq(k).append("<div class='hoverbox'><img src='" + v + "' alt='hover' /></div>");
The function eqwill internally filter the jQuery set for the HTML element in the index k. See the documentation here .
, , HTML- append appendChild, node , HTML .