Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Jquery单击可编辑的div,然后按键盘上的Delete键来删除它?

如何使用Jquery单击可编辑的div,然后按键盘上的Delete键来删除它?
EN

Stack Overflow用户
提问于 2018-12-30 03:50:43
回答 3查看 565关注 0票数 2

我有一个div,它的属性contenteditable = true。我可以通过双击div来激活div内容编辑,这是因为我的div是可拖动的,所以我使用dooble click事件来激活div编辑。事实是,我想通过单击它,然后按键盘上的Delete键来消除完整的div。我该怎么做呢?如何才能使我在div上编写内容并按delete键时,整个div不会被删除?我只想在div版本未激活时删除div,只需单击div然后按delete键,瞧,它就被删除了。

这是我的HTML代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).ready(function() {

  $('.draggable').draggable({
    containment: "parent"
  });

  $(".draggable").resizable();

  $('#MyFirstDiv').click(function() {
    //HERE I WANT TO PUT THE CODE TO DELETE THE DIV.
  });

  $("#myContainer").on("dblclick", "#MyFirstDiv", function(e) {
    e.preventDefault();
    $(".draggable").draggable('disable');

    this.querySelector(":scope > :first-child").focus();

  });

  $("#myContainer").on("blur", "#MyFirstDiv", function(e) {
    e.preventDefault();
    $(".draggable").draggable('enable');
  });

});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#myContainer {
  border: 1px solid black;
  height: 400px;
  width: 100%;
}

#DraggableDiv {
  border: 1px solid blue;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>

<head>
  <title>My Delete Div</title>

  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
</head>

<body>

  <div id="myContainer">
    <div id="MyFirstDiv">
      <div class="draggable" contenteditable="true" id="DraggableDiv">
        THIS IS MY TEXT INSIDE THE DIV
      </div>
    </div>
  </div>

</body>

</html>

EN

回答 3

Stack Overflow用户

发布于 2018-12-30 04:01:45

捕获delete键上的快捷键的最简单方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('#MyFirstDiv').click(function(e){
   e.preventDefault(); 
});
$('#MyFirstDiv').keydown(function(e){
    e.preventDefault();
    if(e.keyCode == 46) {
        this.remove();
    }
});
票数 0
EN

Stack Overflow用户

发布于 2018-12-30 04:17:51

您可以首先创建一个变量:divClicked,我存储div的单击状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var divClicked = false;

然后在你的事件监听器中,更新divClicked (它将是一个切换按钮):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("#MyFirstDiv").click(function(e) {
    e.preventDefault();
    divClicked = !divClicked;
}

最后,添加一个删除按键事件监听器,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("#MyFirstDiv").keydown(function(e) {
    e.preventDefault();
    if (e.keyCode == 46) {
        if (divClicked) {
            $(this).remove();
        } else {
            alert("Click the div first then press Delete to remove it");
        }
    }
})

完整代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var divClicked = false;

$("#MyFirstDiv").click(function(e) {
    e.preventDefault();
    divClicked = !divClicked;
}

$("#MyFirstDiv").keydown(function(e) {
    e.preventDefault();
    if (e.keyCode == 46) {
        if (divClicked) {
            $(this).remove();
        } else {
            alert("Click the div first then press Delete to remove it");
        }
    }
})
票数 0
EN

Stack Overflow用户

发布于 2018-12-30 20:36:46

测试

  • 单击要选择的文本。
  • 按D删除。遗憾的是,删除键在堆栈溢出上不起作用。只需更改if语句中的键代码,即可将键从D改为DELETE

解释

有两个函数可以帮助解决这个问题。

选择:选中所单击的div。

EventListener:Listens,并删除选定的div。

选择函数

选定的

  1. 全局变量存储有关选定div的信息。

在select函数中,我们使用currentTarget.id从事件对象‘e’中获取所单击的的id

select函数内的

  1. If语句选择并取消选择div.

EventListener

  1. 使用来自按键监听器的事件对象来获取pressed.
  2. e.keyCode提供的密钥。e.which是一种后备方案。对于ie用户
  3. ,如果他们的keyCode是100 (D键),那么使用

变量来获得所选的div并将其css显示改为‘none’。

另外还有一个else语句,当未选择任何内容并按下键时,您可以在其中添加js。

此外,所选类的css用于反馈何时选择div。

以下是代码片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let selected;

const select = e => {
    //If already selected, this will deselect the div
    if(selected == e.currentTarget.id) {
      document.getElementById(selected).classList.remove('selected'); //some CSS
      selected = null;
    } else {
       //select this div
      selected = e.currentTarget.id;
      document.getElementById(selected).classList.add('selected'); //some CSS
    }
}

window.addEventListener('keypress', e => {
  //Get key pressed
  let key = e.keyCode || e.which;
  if(selected != undefined) {
      if(key == 100) {//If D is pressed
        let target = document.getElementById(selected); //get the div
        target.style.display = 'none'; //hide div
        console.log('deleted: ' + selected);
      }
  } else {
    //Runs if nothing is selected. Do as you please here.
  }
})
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.selected {
  background: black;
  color: white;
}

#DraggableDiv {
  user-select: none;
  cursor: pointer;
  font-family: sans-serif;
  width: 400px;
  text-align: center;
  padding: 10px 5px;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>

<head>
  <title>My Delete Div</title>

</head>

<body>

  <div id="myContainer">
    <div id="MyFirstDiv">
      <div id="DraggableDiv" onclick="select(event)">
        Click me and press D
      </div>
    </div>
  </div>

</body>

</html>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53975149

复制
相关文章
jquery点击删除按钮,删除当前的div
现在有多行div,共用一个删除事件,点击删除的时候,会把页面所有的div全都删掉了,但是我只需要点击哪一行div里面的删除按钮,就删除哪一行,其实很简单,只需要写一个this事件即可。
王小婷
2019/07/08
5.2K0
Mac 键盘上的 Windows 按键映射
Mac 键盘上很多按键的功能与 Windows 键盘按键的功能相同。以下是其中的一些按键:
云深无际
2021/04/14
3K0
Mac 键盘上的 Windows 按键映射
主外键关联删除(on delete set null和on delete cascade)
主外键关联,当删除的是父表数据,参照这些要删除的数据,Oracle有三种处理方式:
bisal
2019/01/29
2.9K0
Vue学习笔记之Vue知识点补充
在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步:
Jetpropelledsnake21
2018/08/10
1.2K0
Vue学习笔记之Vue知识点补充
v-on绑定的一系列事件修饰符
官方文档看-->https://cn.vuejs.org/v2/guide/events.html
名字是乱打的
2021/12/22
2.2K0
vue常用的修饰符有哪些?
在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步:
Javanx
2020/08/10
2.8K0
电脑技巧:键盘上ESC按键的使用小技巧,你都知道吗?
ESC和它本身的英语含义类似,针对一些电脑应用程序中,当运行的程序出现全屏后,我们就可以用它退出全屏页面。(大家比较常用的有:电脑游戏全屏、播放视频的时候都可以使用ESC退出全屏操作)
IT技术分享社区
2021/12/22
1.9K0
电脑技巧:键盘上ESC按键的使用小技巧,你都知道吗?
Intellij IDEA快捷使用
某些快捷键可能与操作系统或其它软件的全局快捷键是冲突的,则按下会无效或执行其它命令,可以在Intellij IDEA的设置的Keymap中修改为其它按键。
海拥
2021/08/23
1.3K0
解决在SecurecCRT登录后,发现方向键、backspace(退格键)、delete(删除键)为乱码的问题
问题:使用securecrt ssh到linux之后,backspace(退格键),delete(删除键),以及4个方向键都为乱码,不能正常使用。按tab键也没有自动补全文件名。
黑泽君
2018/10/11
5.4K0
[Vue 牛刀小试]:第六章 - 按键修饰符的使用
   上周末的时候,准备试试将 ASP.NET Core 的项目部署到 CentOS 服务器上,结果在一个接一个坑里面跳,最后 Supervisor 守护程序还是有问题,于是,采用重装系统大招,结果,碰巧赶上 aspnetcore 的一个 bug( Missing package dotnet-runtime 2.1.6 for CentOS),嗯,最后 dotnet core 环境装不上了,原本打算更新的 .NET Core 文章以及日常的 Vue 学习计划也暂时搁浅了。
程序员宇说
2019/09/11
9060
[Vue 牛刀小试]:第六章 - 按键修饰符的使用
「解放双手」老舅教你VS Code Disco
也许你收藏了千篇万篇VS Code快捷键,很可惜却没能记住他们,是因为你没有实际操作过,英文不好没关系,你真正需要的是让你双手指尖的肌肉增加一些记忆。
童欧巴
2020/03/30
1.2K0
HTML5+CSS3+JavaScript从入门到精通-21
HTML5+CSS3+JavaScript从入门到精通 作者:王征,李晓波 第二十一章 JavaScript的框架库jQuery 案例 21-01 jQuery的使用 <!DOCTYPE html> <!--web21-01--> <!-- $("#h01"), #后接的是id,要加引号 --> <html> <head> <meta charset="utf-8" /> <title>jQuery的使用</title> <script src="jquery-1
qiqi_fu
2021/12/06
3K0
HTML5+CSS3+JavaScript从入门到精通-21
使用easydrag实现可拖动的DIV弹出框
最近在工作中遇到了jquery的easydrag插件,我有一种相见恨晚的赶脚!easydrag极大的方法我们实现div弹框这个功能,使我爱不释手! 在没遇到easydrag插件之前,想实现一个弹出框并不是一件轻而易举的事情! 人们常说没有不劳而获的事情,但在编码的世界中却不是这样。更多的开源框架方面了我们,也毒害了我们!
业余草
2019/01/21
2.3K0
使用easydrag实现可拖动的DIV弹出框
十四.Vue事件处理
十四.Vue事件处理
Java架构师必看
2021/05/14
1.7K0
十四.Vue事件处理
前端-part10-jQuery操作样式三:函数+事件委托+阻止冒泡+鼠标事件+输入框监听
1.jQurey的 .each() 循环方法的使用 //一般方法示例1 for (var i=0;i<$("div").length;i++){ // 定位到所有的 div 标签并遍历其下标 console.log($("div")[i]); // 依次打印出标签 } //jQUery的 .each() 方法示例1 $("div").each(function(){ console.log(this); }) =========================================
少年包青菜
2019/08/28
2.5K0
JavaScript学习笔记(四)—— jQuery入门
子元素伪类选择器就是选择某一个元素下面的子元素的方式,在jQuery中,子元素伪类选择器分为两大类:
wsuo
2020/07/31
11.2K0
jquery.edatagrid(可编辑datagrid)的使用
本文介绍了面向对象和函数式编程在软件工程中的优缺点,以及它们在特定场景下的适用性。作者通过对比面向对象编程和函数式编程,分析了它们的异同以及各自的适用场景。同时,文章也探讨了面向对象编程和函数式编程在软件开发中的实际应用,以及如何将它们结合使用以提高软件开发的效率和效果。
用户1141560
2017/12/26
1.5K0
jquery.edatagrid(可编辑datagrid)的使用
jquery 节点的删除
detach()方法删除跟remove()一样,在删除节点后,同样也可以赋值给变量再次使用。
坚毅的小解同志的前端社区
2022/11/28
1.7K0
jquery 节点的删除
使用 Delete By Query API 的方式删除ES索引中的数据
ES作为现今最流行的搜索存储库,我们需要定期去清理ES集群的数据以保证集群处在一个最佳负载状态,那么如何去删除这些数据呢,我们今天来介绍一种比较常见的通过Delete By Query的方式去删除索引中的数据。
南非骆驼说大数据
2020/11/01
39.9K0
点击加载更多

相似问题

隐藏,然后删除Jquery可拖放的Div。

25

如果按键盘上的键,跳到特定的div。

25

如何通过按键盘上的特定键来激活按钮?

20

使用Jquery(kohana)单击可单击的div

14

Jquery:单击可触发按键事件

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文