首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单击事件不止一次,但每次单击后取消绑定

单击事件不止一次,但每次单击后取消绑定
EN

Stack Overflow用户
提问于 2011-08-28 00:50:28
回答 2查看 585关注 0票数 1

我想做的是:每次我点击一个表格行,它就进入编辑模式。当我单击另一行时,我以前单击的行退出编辑模式,而我刚才单击的行则进入编辑模式。

以下代码位于包含的JavaScript文件中。我有一个使表行可编辑的函数。

代码语言:javascript
运行
复制
function editRow(row) {
    /* awesome code here */
}

做好准备..。

代码语言:javascript
运行
复制
$(".editable_title").click(function() {
    editRow(this.parentNode);
});`

我试过的是:

  1. 将代码放在$(document).ready(function() { });之间,但它只适用于第一次单击和第一次编辑提交。但是,如果我再次尝试这样做,它就不能工作了,
  2. 只是将代码单独放入包含的文件中,而不使用$(document).ready(function(){ });。然后在tr的问题上使用onclick事件:

代码语言:javascript
运行
复制
1. The JavaScript is intrusive. 
2. If I click on the same row more than once, it keeps on triggering the event multiple times; and if I click in different rows, all of them go into edit mode at the same time.

我知道这只是一个不断的事件侦听器和使用取消绑定的问题。我试过使用.live(),它工作得很好,但后来我无法让.die()工作。

你能给我一些建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-28 04:20:58

尝尝这个

代码语言:javascript
运行
复制
$(".editable_title").one(function() {
    editRow(this);
});

function editRow(row) {
    var rowNode = row.parentNode;
    /* awesome code here */


    //Attach the click event here again after editing is done
    //If you are doing any ajax calls then this should be done in the success callback
    $(row).one(function() {
       editRow(this);
    });
}
票数 1
EN

Stack Overflow用户

发布于 2011-08-28 01:00:42

您可以使用one而不是click

代码语言:javascript
运行
复制
$('.editable_title').one('click', function() { editRow(this.parentNode); });

然后,在完成编辑时,只对您编辑的行在one上再次使用.editable_title

或者你可以用旗子:

代码语言:javascript
运行
复制
$('.editable_title').click(function() {
    var $p = $(this).parent();
    if($p.data('editing'))
        return;
    $p.data('editing', true);
    editRow($p[0]);
});

然后,当您完成编辑时,为适当的$x.removeData('editing')执行一个$x

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

https://stackoverflow.com/questions/7218347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档