我有以下事件处理代码: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