Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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++;,关于.selection()的问题_Javascript_Jquery_Jquery++ - Fatal编程技术网

Javascript jQuery++;,关于.selection()的问题

Javascript jQuery++;,关于.selection()的问题,javascript,jquery,jquery++,Javascript,Jquery,Jquery++,所有人。 我有一个小问题;我正在尝试构建所见即所得,但遇到了一些问题。 我有一个id=desc2的contenteditable div和一些按钮。让我们以“粗体”按钮为例 我已经删除了脚本的另一部分,因为如果我能让它工作,我就完成了:D 所以,正如我所说的,如果我这样做,一切都很好:我在div上插入一个部分,然后在控制台上输出内容。 但这不是我想做的。我写道: $('.magicbutton.uno').on('click', function(){ var id = $(this).

所有人。
我有一个小问题;我正在尝试构建所见即所得,但遇到了一些问题。
我有一个id=desc2的contenteditable div和一些按钮。让我们以“粗体”按钮为例

我已经删除了脚本的另一部分,因为如果我能让它工作,我就完成了:D
所以,正如我所说的,如果我这样做,一切都很好:我在div上插入一个部分,然后在控制台上输出内容。 但这不是我想做的。我写道:

$('.magicbutton.uno').on('click', function(){
    var id = $(this).parent().attr("magic_id");
    var selection = $("#"+id).selection(),
    text = $("#"+id).text().substring(selection.start, selection.end);
    console.log(text);
});
每次单击时,都会更改div的ID,并输出所选文本,但不会更改。
代码是相同的,我检查了第一个脚本中的
$(this)
是否与第二个脚本中的
$(“#”+id)
相同

我能做什么?谢谢


编辑:

当DIV失去焦点时,选择将无效。作为解决方法,您可以使用数据对象:


如果单击oustide input/textarea(或什么??),选择是否会松动?也许你可以提供一个JSFIDLE让你的问题更清楚,因为在这里你使用了一些选择器,而不让我们看到任何相关的HTML标记,例如,
“#”+id
元素是什么?谢谢你的快速回答,这很有效,但我想避免使用mouseup事件,我所要问的是为什么mouseup可以工作,而用相同的代码单击却不能。编辑:哦,我现在明白了,这是因为聚焦的缺失。。。我会设法找到一种方法,用鼠标控制焦点。谢谢
$('#desc2').on('mouseup', function() {
    var selection = $(this).selection(),
        text = $(this).text().substring(selection.start, selection.end);
    console.log(text);
});
$('.magicbutton.uno').on('click', function(){
    var id = $(this).parent().attr("magic_id");
    var selection = $("#"+id).selection(),
    text = $("#"+id).text().substring(selection.start, selection.end);
    console.log(text);
});
$('.magicbutton.one').on('click', function(){
    var id = $(this).parent().attr("magic_id"); //id = desc2, i used this because i could have multiple forms in a page
    var selection = $("#"+id).data('selection');
    alert(selection);
}); //This doesn't work

$('#desc2').on('mouseup', function() {
    var selection = $(this).selection(),
        text = $(this).text().substring(selection.start, selection.end);
    $(this).data('selection', text);
});