Вы можете перебрать объект $.cache
, в котором хранятся события, например:
$.each($.cache, function(i, v) {
if(v.events && v.events.click && v.events.click.length > 1) {
alert($('[' + $.expando + '=' + i + ']').attr('id'));
}
});
Попробуйте здесь или сделайте его более общим для любого события с несколькими обработчиками, например:
$.each($.cache, function(i, v) {
$.each(v.events, function(j, u) {
if(u.length > 1)
alert($('[' + $.expando + '=' + i + ']').attr('id'));
});
});
Вы можете попробовать эту версию здесь , обратите внимание, что для обоих этих подходов требуется jQuery 1.4+, свойство expando
не доступно в 1.3.x.
Если вы хотите, чтобы коллекция jQuery ссылалась на эти элементы, вы можете создать ее по ходу, например:
var elems = [];
$.each($.cache, function(i, v) {
$.each(v.events, function(j, u) {
if(u.length > 1)
$.merge(elems, $('[' + $.expando + '=' + i + ']'));
});
});
$(elems).css('color', 'red'); //use it, $(DOMElementArray) overload here
Вы можете проверить эту версию здесь .