Actualmente trabajo con globos de discurso de lona. Pero debido a que el globo con el puntero está envuelto en un div, algunos enlaces debajo ya no pueden hacer clic. No puedo usar extjs en este caso.
Ver ejemplo básico para mi tutorial de globo de discurso requiere HTML5
Así que decidí recopilar todas las coordenadas del enlace desde el interior de los globos en una matriz.
var clickarray=[];
function getcoo(thatdiv){
thatdiv.find(".link").each(function(){
var offset=$(this).offset();
clickarray.unshift([(offset.left),
(offset.top),
(offset.left+$(this).width()),
(offset.top+$(this).height()),
($(this).attr('name')),
1]);
});
}
Llamo a esta función en cada (nuevo) globo. Toma las coordenadas de las esquinas izquierda / superior y derecha / abajo de un enlace. Clase: además, el atributo de nombre de qué hacer si alguien hace clic en esas coordenadas y me encantó establecer un 1, lo que significa que no se hizo clic en chorro . Y desplace esta matriz a la matriz de clics. Podrías usar push también.
Para trabajar con esa matriz:
$("body").click(function(event){
event.preventDefault();//if it is a a-tag
var x=event.pageX;
var y=event.pageY;
var job="";
for(var i in clickarray){
if(x>=clickarray[i][0] && x<=clickarray[i][2] && y>=clickarray[i][1] && y<=clickarray[i][3] && clickarray[i][5]==1){
job=clickarray[i][4];
clickarray[i][5]=0;//set to allready clicked
break;
}
}
if(job.length>0){
// --do some thing with the job --
}
});
Esta función prueba las coordenadas de un evento de clic en el cuerpo o si ya se hizo clic y devuelve el atributo de nombre. Creo que no es necesario profundizar, pero ya ves que no es tan complicado. Hope in was enlish ...