多次点击事件,但每次点击后解除绑定
我想要做什么:每次单击表格行时,它都会进入编辑模式。当我单击另一行时,我之前单击的行退出编辑模式,而我刚刚单击的行进入编辑模式。
以下代码位于包含的 JavaScript 文件中。我有一个使表行可编辑的功能。
function editRow(row) {
/* awesome code here */
}
并准备好事件...
$(".editable_title").click(function() {
editRow(this.parentNode);
});`
我尝试过:
将代码放在
$(document).ready(function() { }); 之间,但它仅适用于第一次单击以及第一次编辑提交。但是,如果我尝试再次执行此操作,它就不起作用。
只需将代码本身放入包含的文件中,无需使用
$(document).ready(function(){ });
。然后在 tr 上使用onclick
事件。问题:- JavaScript 是侵入性的。
- 如果我多次点击同一行,它会继续多次触发该事件;如果我单击不同的行,所有行都会同时进入编辑模式。
我知道这只是拥有一个恒定事件侦听器并使用取消绑定的问题。我尝试使用 .live()
,效果很好,但后来我无法让 .die()
工作。
你能给我一些建议吗?
What I want to do: Every time I click a table row it goes into edit mode. When I click another row, the row I clicked previously exits edit mode and the one I just clicked goes into edit mode.
The following code is in an included JavaScript file. I have a function that makes table rows editable.
function editRow(row) {
/* awesome code here */
}
and have the events ready...
$(".editable_title").click(function() {
editRow(this.parentNode);
});`
What I have tried:
Put the code in between
$(document).ready(function() { });
but it only works with the first click and the first edit submission. But then, if I try to do it again, it just doesn't work.Just put the code by itself in the included file without the
$(document).ready(function(){ });
. Then useonclick
events on the tr's. Problem:- The JavaScript is intrusive.
- 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.
I know it's just a matter of having an constant event listener and using unbind. I tried using .live()
which worked well but then I couldn't get .die()
to work.
Can you please give me some suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
one
而不是click
:然后在完成编辑后,仅在您编辑的行的
.editable_title
上再次使用one
。或者你可以使用一个标志:
然后执行
$x.removeData('editing')
,当您完成编辑后,选择适当的$x
。You could use
one
instead ofclick
:And then use
one
again on just the.editable_title
for the row you edited when you're done editing.Or you could use a flag:
And then do a
$x.removeData('editing')
, for the appropriate$x
, when you're done editing.试试这个
Try this