Технически идентификаторы элементов всегда должны быть уникальными, да, у вас могут быть элементы с одинаковым идентификатором, но вы столкнетесь с такими проблемами.Где механизм выбора jQuery ожидает только один элемент с заданным идентификатором, так что в итоге он найдет первый элемент и проигнорирует остальные.
Что вам нужно сделать, так это дать им один и тот же класс, например
class="widget"
и селектор будет
$(".widget")
РЕДАКТИРОВАТЬ: ах да, почему-то я думал, вы упомянули, что вы используете jQuery.но вот функция, которая получает все элементы по идентификатору, которая не требует никакой библиотеки
/*
* ElementsById
*
* Author: Diego Perini
* Updated: 07/12/2006
* Version: 0.0 (from parent)
*
* Extracted from latest IPORT/STYLER engines.
*
* Returns an array of elements with specified ID.
*/
function ElementsById($id) {
var c = 0, i = 0, j = 0, k = 0;
var nodes=[], storage = arguments.callee.storage;
var elements = document.getElementsByTagName('*');
var length = elements.length;
if (storage &&
storage.nodes &&
storage.length == length &&
storage.first == elements[0] &&
storage.last == elements[length-1]) {
k = $id;
while (storage.nodes[k]) {
nodes[nodes.length] = storage.nodes[k];
k = $id + '*' + (++i);
}
} else {
storage = { };
storage.nodes = { };
storage.length = 0;
storage.first = elements[0];
storage.last = elements[length - 1];
while (length > i) {
c = elements[i];
if ((k = c.id) == $id) {
nodes[nodes.length] = c;
if (storage.nodes[k]) {
k = c.id + '*' + (++j);
}
}
i++;
storage.nodes[k] = c;
storage.length++;
}
arguments.callee.storage = storage;
}
return nodes;
}