ho il seguente evento che gestisce il codice:jQuery evento di selezione del testo
$('#main').delegate('.slide', 'click', function() {
slideshow.next();
});
$('#main').delegate('a', 'click', function (e) {
e.stopPropagation();
});
.slide
è una grande div con il contenuto. slideshow.next()
viene chiamato quando si fa clic su .slide
, tranne quando viene fatto clic su un collegamento, nel qual caso stopPropagation()
e .slide
non riceve mai l'evento click.
Vorrei rendere possibile la selezione del testo sulla diapositiva. Al momento, se clicco e trascino, quando rilascio il mouse la selezione funziona ma .slide
registra il clic e attiva la funzione slideshow.next()
. C'è un evento che posso intercettare?
La pagina è available here.
Edit: È interessante notare che, se la selezione si estende su più di un elemento HTML, click
non è sparato, ma la selezione è all'interno di un elemento, si è sparato.
Edit2: Ok, ecco la mia soluzione:
function setupHandlers() {
var prevX = 0;
var prevY = 0;
$('#main').delegate('.slide', 'click', function (e) {
var clickTolerance = 2;
var dx = Math.abs(e.pageX - prevX);
var dy = Math.abs(e.pageY - prevY);
//if mouse has moved less than two pixels in any direction this is a click
if (dx < clickTolerance && dy < clickTolerance) {
slideshow.next();
}
});
$('#main').delegate('.slide', 'mousedown', function (e) {
prevX = e.pageX;
prevY = e.pageY;
});
$('#main').delegate('a', 'click', function (e) {
//Clicks on links shouldn't fire '.slide'.click() above
e.stopPropagation();
});
}
grazie, stavo arrivando a pensare che questa potrebbe essere l'unica soluzione – Skilldrick
@Skilldrick Fatemi sapere se provate questo ~ buona fortuna –
Sono andato con questa soluzione - ha aggiornato la domanda con il mio codice di lavoro Cheers :) – Skilldrick