我有以下事件處理代碼:jQuery的文本選擇事件
$('#main').delegate('.slide', 'click', function() {
slideshow.next();
});
$('#main').delegate('a', 'click', function (e) {
e.stopPropagation();
});
是一個大格的內容。當單擊時除外單擊鏈接時調用slideshow.next()
,在這種情況下stopPropagation()
和永遠不會收到單擊事件。
我想讓選擇幻燈片上的文本成爲可能。此刻,如果我點擊並拖動,當我釋放鼠標時選擇工作但註冊點擊並激活slideshow.next()
功能。有我能攔截的事件嗎?
該頁面爲available here。
編輯:有趣的是,如果選擇跨越多個HTML元素,click
不解僱,但它的選擇是一個元素中,它被激發。
EDIT2:好吧,這裏是我的解決方案:
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();
});
}
`.select`僅適用於表單元素:( – Skilldrick 2011-01-26 23:20:02
我不想投下來,但它是錯誤的答案 - 。選擇是形式文本選擇,而不是一般的文本選擇 – Skilldrick 2011-01-26 23:33:04