首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >jQuery onClick只在表单元格上运行一次。

jQuery onClick只在表单元格上运行一次。
EN

Stack Overflow用户
提问于 2013-08-08 04:50:36
回答 2查看 2K关注 0票数 0

当用户单击表中的单元格时,表中有一个行列表,当用户单击该表中的单元格时,该列表将尝试使其可编辑。我的计划是然后发出AJAX请求来更新这些数据。

下面是我的HTML的一个示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<tr>
    <td>3</td>
    <td class="textFieldCell"><span class="textField" data-question-id="3">Is the instructor aware of their self development and self improvement areas they are working toward as part of their planned delivery and self peer or tutor assessment?</span></td>
    <td class="sortOrderFieldCell"><span class="sortOrderField" data-question-id="3">3</span></td>
    <td><a href="#" class="deleteQuestion" data-questionid="3">Delete Question</a></td>
</tr>

因此,这里的想法是,当用户单击表中的span时,它将被一个输入框所取代,在输入框中,用户可以更改数据,然后在模糊的位置上进行AJAX调用。我对编写AJAX调用非常满意,但我遇到了一个问题,即box表单元格只允许jQuery将其更改为输入字段一次。下面是对这个问题的一步一步的描述:

  1. 用户在表格单元格上裁剪,该单元格工作良好,而span将被一个输入框替换。
  2. 然后,用户单击输入框,该输入框将输入框转换为没有任何问题的跨度。
  3. 问题就在这里,如果用户试图单击同一表格单元格再次编辑它,jQuery就不会运行。

这是我的jQuery:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jQuery('.sortOrderField').click(function() {
        var input = jQuery('<input />', {'type': 'text', 'class': 'sortOrderField', 'name': 'aname', 'value': jQuery(this).html()});
        jQuery(this).parent().append(input);
        jQuery(this).remove();
        input.focus();
        jQuery('.sortOrderFieldCell input').blur(function() {
            var html = "<span class='sortOrderField' data-question-id='3'>" + jQuery(this).val() + "</span>";
            jQuery(this).parent().append(html);
            jQuery(this).remove();
        });
    });

有人知道为什么这个jQuery只在一个表格单元格上运行一次吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-08 04:56:49

您需要在这里使用事件委托。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jQuery(document).on('click', '.sortOrderField', function() {
    var input = jQuery('<input />', {'type': 'text', 'class': 'sortOrderField', 'name': 'aname', 'value': jQuery(this).html()});
    jQuery(this).parent().append(input);
    jQuery(this).remove();
    input.focus();
});
jQuery(document).on('blur', '.sortOrderFieldCell input', function() {
    var html = "<span class='sortOrderField' data-question-id='3'>" + jQuery(this).val() + "</span>";
    jQuery(this).parent().append(html);
    jQuery(this).remove();
});

演示:小提琴

票数 1
EN

Stack Overflow用户

发布于 2013-08-08 05:06:15

将事件附加到当前具有类sortOrderField的页面中的所有项。

但是,在执行jQuery(this).remove();时,可以从页面中移除元素,并且触发器也会随之执行。

为了使触发器保持不变,应该使用选择器参数将其附加到父元素。下面是一个示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jquery('table.editableTable').on( 'click', '.sortOrderField', function() {
    var input = jQuery('<input />', {'type': 'text', 'class': 'sortOrderField', 'name': 'aname', 'value': jQuery(this).html()});
    jQuery(this).parent().append(input);
    jQuery(this).remove();
    input.focus();
});
jQuery('table.editableTable').on('blur', '.sortOrderFieldCell input', function() {
    var html = "<span class='sortOrderField' data-question-id='3'>" + jQuery(this).val() + "</span>";
    jQuery(this).parent().append(html);
    jQuery(this).remove();
});

此示例假设您的行位于类editableTable的表中。这段代码还假设没有向页面添加新表。

出于性能原因,我建议您将这些事件放在触发器将触发的元素的最接近的父元素上,以尽量减少事件和元素搜索冒泡的工作量,但这当然取决于页面的大小以及对性能的按下程度。

有关更多信息,请查看jquery .on()文档

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

https://stackoverflow.com/questions/18126516

复制
相关文章
jquery cookie示例 - 只提示一次的弹框
经常有些网站在访问的时候,就是有一个弹框介绍一下通知内容。然后点击已读之后,就不会再弹出了。
Devops海洋的渔夫
2019/05/31
1.8K0
哈希表应用:只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
叶茂林
2023/07/30
1590
在QEMU上运行OPTEE
TEE越来越成为一种基础的安全技术,optee作为一种优秀的开源TEE OS正吸引了越来越多的厂商,越来越多的学习者,安智客之前也多次介绍过
安智客
2018/07/30
2.6K0
在QEMU上运行OPTEE
为什么不要在 Linux 上只运行开源软件?
迁移到 Linux 平台并不是一个非此即彼的提议。Linux 作为一个灵活开放的计算平台为用户在软件选择上提供了更多的选项。
用户2664798
2021/09/09
1.6K0
在OS X上运行Docker
本文介绍了如何在OS X上运行Docker,通过使用boot2docker和VirtualBox,使基于Linux的Docker能在OS X上正常运行。同时,还探讨了如何将现有的基于Linux的Docker容器迁移到基于macOS的Docker。
Techeek
2018/01/04
1.9K0
在OS X上运行Docker
在Android系统上运行frp
一时兴起,想在Android上跑一下frpc,本来以为需要在PC上交叉编译后放到机器上才行,后来发现好像更简单,Android YYDS!
老高的技术博客
2022/12/28
4.3K0
在Android系统上运行frp
在kubernetes上运行WASM负载
WASM一般用在前端业务中,但目前有扩展到后端服务的趋势。本文使用Krustlet 将WASM服务部署到kubernetes。
charlieroro
2021/05/10
1.4K0
在kubernetes上运行WASM负载
在Hadoop上运行Python脚本
之前已经配置好了Hadoop以及Yarn,可那只是第一步。下面还要在上面运行各种程序,这才是最重要的。
py3study
2020/01/06
4.2K0
JSX onClick 和 HTML onclick 的区别
在 JSX 中可以通过 onClick 这样的方式给一个元素添加一个事件处理函数,当然,在 HTML 中也可以用 onclick (小写 c),但在 HTML 中直接书写 onclick 一直就是为人垢病的写法,网页应用开发界一直倡导的是用 jQuery 的方法添加事件处理函数,直接写 onclick 会带来代码混乱的问题。
Leophen
2021/07/08
1.8K0
在Docker上运行Django和Vue
在Docker上运行Django和Vue Run Django and Vue on Docker Django Dockerfile 生成django项目依赖包. Generate Django project dependencies. pip freeze > requirements.txt 编写django启动脚本 run.sh Write a Django startup script run.sh python3 manage.py runserver 0.0.0.0:8000 编写 D
葫芦
2021/09/08
1.3K0
在Docker上运行Django和Vue
Spacebuilder在Mono上运行修改备忘
Spacebuilder 是一个asp.net mvc3项目,使用到了Combres,Combres依赖于dotless,然后在Spacebuilder的项目没有见到的dotless,运行要求dotless 1.3.0.2版本,通过Nuget获取: Install-Package dotless -Version 1.3.0.2 修改web.config加入dotless配置: <configuration>   <configSections>     <section name="combr
张善友
2018/01/29
1.2K0
Spacebuilder在Mono上运行修改备忘
在gpu上运行Pandas和sklearn
当涉及大量数据时,Pandas 可以有效地处理数据。但是它使用CPU 进行计算操作。该过程可以通过并行处理加快,但处理大量数据仍然效率不高。
deephub
2022/11/11
1.6K0
在gpu上运行Pandas和sklearn
在Windows上使用Docker运行.NetCore
今天我们来说下如何在windows下使用docker运行.net core,既然是docker,那么我们首先得在windows上安装docker。
小世界的野孩子
2019/09/11
4.3K0
在Windows上使用Docker运行.NetCore
在 FPGA 上运行 eBPF XDP 应用
这篇文章是对 OSDI20 的 Best Paper hXDP: Efficient Software Packet Processing on FPGA NICs 的阅读笔记,感兴趣的同学可以点击阅读原文查看论文的 paper,slide 和 video。
Oilbeater
2021/10/20
1.3K0
在Windows上如何后台运行JuiceFS
JuiceFS的Badger引擎改造完成以后,需要在Windows下面进行后台运行。因为现有的JuiceFS中还没有在Windows下的后台运行实现,所以需要通过其他途径解决。
用户1260683
2022/03/30
2.8K0
在Windows上如何后台运行JuiceFS
在 Linux or windows 上后台运行服务
  此时可以访问 http://ip:8000 验证服务是否成功启动了(详细操作见另一篇文章-Python 一行搭建文件服务器)
我是胖虎啊
2022/06/27
3.2K0
在 Linux or windows 上后台运行服务
在Ubuntu上启动并运行Hadoop
Hadoop是一个用Java编写的框架,它允许在大型商品硬件集群上以分布式方式处理大型数据集。
大数据弄潮儿
2018/05/29
4.6K0
在Ubuntu上启动并运行Hadoop
ParallelX在GPU上运行Hadoop任务
在面对大规模计算密集型算法时,MapReduce范式的表现并不总是很理想。为了解决其瓶颈,一支小型创业团队构建了名为ParallelX的产品——它将通过利用GPU的运算能力,为Hadoop任务带来显著的提升。 ParallelX的联合创始人Tony Diepenbrock表示,这是一个“GPU编译器,它能够把用户使用Java编写的代码转化为OpenCL,并在亚马逊AWS GPU云上运行”。它的最终产品是一项与亚马逊Elastic MapReduce类似的服务,只不过不同之处在于它将利用EC2 GPU实例类型
GPUS Lady
2018/03/30
1.1K0
LWN: 在 Linux 上运行 macOS 程序
目前有个名叫Darling的项目活跃度不断提升,这个项目是希望能在Linux上提供一个针对macOS软件的translation layer(翻译层),有点类似Wine这个项目所做的工作。Darling比起Wine来说,成熟度差得尚远,因此开发者们现在仍在尽力能增加更多功能,使得此项目在今后的某一天能够对更多用户提供帮助。
用户6543014
2019/10/25
6.4K0
LWN: 在 Linux 上运行 macOS 程序
MySQL只索引组织表
今天没怎么学习,简单写下MySQL里面innodb存储引擎下的索引组织表吧。
AsiaYe
2019/11/06
1.4K0

相似问题

jQuery只运行一次onclick函数

50

Onclick只运行一次

16

JQuery onClick只工作一次

21

OnClick if语句只运行一次?

10

Jquery Onclick按钮只工作一次

344
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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