Atualmente, trabalho com balões de fala em tela. Mas como o balão com o ponteiro está envolvido em uma div, alguns links abaixo dele não podem mais ser clicados. Eu não posso usar extjs neste caso.
Veja o exemplo básico do meu tutorial de balão de fala requer HTML5
Então, decidi coletar todas as coordenadas do link de dentro dos balões em uma 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]);
});
}
Eu chamo essa função em cada (novo) balão. Ele pega as coordenadas dos cantos esquerdo / superior e direito / baixo de um link.class - adicionalmente, o atributo name para o que fazer se alguém clicar nessas coordenadas e eu adorei definir um 1, o que significa que não foi clicado. . E desvie essa matriz para a matriz de cliques. Você também pode usar push.
Para trabalhar com essa 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 --
}
});
Essa função prova as coordenadas de um evento de clique no corpo ou se ele já foi clicado e retorna o atributo name. Eu acho que não é necessário ir mais fundo, mas você vê que não é tão complicado. A esperança era enlish ...