Ho questo pezzo di codice che in pratica mi serve a generare una specie di esplora risorse.
Ad ogni icona devo associare svariati eventi, tipo il click seleziona, il doppio click apre e l'hover mostra un tooltip con informazioni addizionali.
Solo che per qualche ragione, se faccio doppio click anche se la prima riga dell'handler e' e.stopImmediatePropagation(), alla fine del doppio click mi viene comunque invocato l'evento generato da hoverIntent. Avete idea del perche'? le ho provate tutte, anche ritornando false, facendo unbind di tutti gli altri eventi, ecc., comunque il maledetto hoverIntent viene eseguito. E peraltro il tooltip viene mostrato in un posto del cavolo visto che al doppio click entro nella cartella in cui ho doppio cliccato e quindi l'elemento su cui il dblclick e l'hoverIntend venivano invocati non e' piu' presente.
Help!!
Codice PHP:
function addIconToViews (name, icon, droppable, actionBoxId, iType) {
var homeId = "#views-home";
var iconBox = $('<div></div>');
//[...]
//This action depends on what type of resource the user
//is double-clicking or single-clicking
switch (iType) {
case iconType.folder:
iconBox.dblclick(function(e) {
e.stopImmediatePropagation(); //Stop propagation
goToFolder (actionBoxId);
console.log ("Called double click", e);
});
iconBox.click(function(e) {
e.stopImmediatePropagation(); //Stop propagation
$(this).toggleClass('iconSelected');
generateActionMenu();
e.preventDefault();
console.log ("Called click");
});
break;
case iconType.cmap:
iconBox.dblclick(function(e) {
e.stopImmediatePropagation(); //Stop propagation
e.preventDefault();
});
iconBox.click(function(e) {
e.stopImmediatePropagation(); //Stop propagation
$(this).toggleClass('iconSelected');
generateActionMenu();
});
break;
}
iconBox.hoverIntent ({over: function(e) {showActionBox ($(this), actionBoxId); console.log ("Called hover intent", e);}, out: function() {return false}, timeout: 500, interval: 500, sensitivity: 3});
//[...]
$(homeId).append (iconBox);
}