Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery取消选择事件_Javascript_Jquery - Fatal编程技术网

Javascript jquery取消选择事件

Javascript jquery取消选择事件,javascript,jquery,Javascript,Jquery,每当用户在HTML文档上执行鼠标向下移动并在释放按钮之前拖动鼠标时,他移动的内容就会被选中 我正在创建一个jquery滑块,我想取消这个事件,这样当用户在文本上拖动鼠标时,文本不会被选中 此示例适用于: 如果在光标位于“这是来自…”文本的示例”上时启动鼠标向下移动,则该文本将被选中 但是,如果在光标位于滚动升降器上时启动鼠标向下移动,然后将鼠标移到“这是来自…”文本的示例上,则在将光标移到文本上时,文本不会被选中 他们是如何取消文本选择的 谢谢。 <div onselectstart="r

每当用户在HTML文档上执行鼠标向下移动并在释放按钮之前拖动鼠标时,他移动的内容就会被选中

我正在创建一个jquery滑块,我想取消这个事件,这样当用户在文本上拖动鼠标时,文本不会被选中

此示例适用于:

如果在光标位于“这是来自…”文本的示例”上时启动鼠标向下移动,则该文本将被选中

但是,如果在光标位于滚动升降器上时启动鼠标向下移动,然后将鼠标移到“这是来自…”文本的示例上,则在将光标移到文本上时,文本不会被选中

他们是如何取消文本选择的

谢谢。


<div onselectstart="return false;" ondragstart="return false;">
  Go ahead, just try to select me!
</div>
去吧,试着选择我!


去吧,试着选择我!

如果您试图创建滑块,可以直接使用,除非您的应用程序需要一些不同的功能。希望这有帮助\

如果您试图创建滑块,则可以直接使用,除非您的应用程序需要一些不同的功能。希望这有帮助\

我建议创建一个CSS类,在触发
mousedown
事件时将其添加到body元素,并在触发
mouseup
事件(或窗口
blur
事件)时将其删除:

CSS:

JavaScript:

function switchUnselectable(node, unselectable) {
    if (node.nodeType == 1) {
        node.setAttribute("unselectable", unselectable ? "on" : "off");
    }
    var child = node.firstChild;
    while (child) {
        switchUnselectable(child, unselectable);
        child = child.nextSibling;
    }
}

function switchSelection(unselectable) {
    if (unselectable) {
        $("body").addClass("unselectable");
    } else {
        $("body").removeClass("unselectable");
    }
    switchUnselectable($("body")[0], unselectable);
}

var $sliderEl = $("#yourSliderId");

$sliderEl.mousedown(function() {
    switchSelection(true);
});

$sliderEl.mouseup(function() {
    switchSelection(false);
});

$(window).blur(function() {
    switchSelection(false);
});

我建议在触发
mousedown
事件时创建一个CSS类并将其添加到body元素,并在触发
mouseup
事件(或窗口
blur
事件)时将其删除:

CSS:

JavaScript:

function switchUnselectable(node, unselectable) {
    if (node.nodeType == 1) {
        node.setAttribute("unselectable", unselectable ? "on" : "off");
    }
    var child = node.firstChild;
    while (child) {
        switchUnselectable(child, unselectable);
        child = child.nextSibling;
    }
}

function switchSelection(unselectable) {
    if (unselectable) {
        $("body").addClass("unselectable");
    } else {
        $("body").removeClass("unselectable");
    }
    switchUnselectable($("body")[0], unselectable);
}

var $sliderEl = $("#yourSliderId");

$sliderEl.mousedown(function() {
    switchSelection(true);
});

$sliderEl.mouseup(function() {
    switchSelection(false);
});

$(window).blur(function() {
    switchSelection(false);
});

最简单的解决方案是防止
mousedown
事件的默认设置,我怀疑链接页面使用的就是这个。通常可以在开始跟踪滑块上鼠标移动的同一事件处理程序中执行此操作。例如,假设jQuery:

$slider.mousedown(function(e){
    e.preventDefault();
    // Start tracking mouse movement
});
一些较新的浏览器具有CSS属性,可以完成相同的工作(在其他答案中描述),但这是最简单和最广泛使用的技巧


奖金!
通过从事件处理程序返回
false
,可以完成相同的任务。这要求jQuery为您防止事件上的默认设置,并停止将事件传播到父节点上的事件处理程序。

最简单的解决方案是防止
鼠标向下
事件上的默认设置,我怀疑这就是链接页面所使用的。通常可以在开始跟踪滑块上鼠标移动的同一事件处理程序中执行此操作。例如,假设jQuery:

$slider.mousedown(function(e){
    e.preventDefault();
    // Start tracking mouse movement
});
一些较新的浏览器具有CSS属性,可以完成相同的工作(在其他答案中描述),但这是最简单和最广泛使用的技巧


奖金!
通过从事件处理程序返回
false
,可以完成相同的任务。这会要求jQuery为您防止默认事件,并停止将事件传播到父节点上的事件处理程序。

EWWW,内联Javascript。必须有一种使用jQuery的方法来避免这种情况。必须有一种使用jQuery的方法来避免这种情况。