Jquery 多次单击事件,但每次单击后取消绑定
我想做的是:每次单击表行时,它都会进入编辑模式。单击另一行时,我先前单击的行将退出编辑模式,而我刚才单击的行将进入编辑模式 以下代码位于包含的JavaScript文件中。我有一个使表格行可编辑的函数Jquery 多次单击事件,但每次单击后取消绑定,jquery,rows,Jquery,Rows,我想做的是:每次单击表行时,它都会进入编辑模式。单击另一行时,我先前单击的行将退出编辑模式,而我刚才单击的行将进入编辑模式 以下代码位于包含的JavaScript文件中。我有一个使表格行可编辑的函数 function editRow(row) { /* awesome code here */ } 把活动准备好 $(".editable_title").click(function() { editRow(this.parentNode); });` 我所尝试的: 将代码放在
function editRow(row) {
/* awesome code here */
}
把活动准备好
$(".editable_title").click(function() {
editRow(this.parentNode);
});`
我所尝试的:
$(document).ready(function(){})之间代码>但它仅适用于第一次单击和第一次编辑提交。但是,如果我再尝试一次,它就是不起作用
$(document).ready(function(){})代码>。然后在tr上使用onclick
事件。问题:
JavaScript是侵入性的李>
如果我多次单击同一行,它会多次触发事件;如果我在不同的行中单击,所有行都会同时进入编辑模式
.live()
,效果很好,但后来我无法让.die()
工作
您能给我一些建议吗?您可以使用而不是单击:
$('.editable_title').one('click', function() { editRow(this.parentNode); });
然后在编辑完成后,对编辑的行仅在.editable\u title
上再次使用one
或者您可以使用一个标志:
$('.editable_title').click(function() {
var $p = $(this).parent();
if($p.data('editing'))
return;
$p.data('editing', true);
editRow($p[0]);
});
然后在编辑完成后,对相应的$x
执行一次操作。试试这个
$(".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);
});
}
看看这个。这就是你要找的。谢谢@ShankarSangoli,但是我尝试了。一个
,但是在我提交更新按钮之后呢?我无法使更多行进入“编辑更多”。您可以再次调用one
并附加处理程序。我如何才能做到这一点?你的意思是我再次点击该行来再次调用它?它只工作一次。你有没有想过添加一个退出编辑模式的函数,这是在$(“.editable\u title”)上调用的第一件事。单击()
。谢谢@mu,但是我怎么能多次使用.one
呢?@leonel:你必须再次调用它(但只是为了你感兴趣的单个.editable\u title
)当你完成编辑后,我怎么能再叫它?我不明白。我可能可以在链接上执行一个onclick()
事件,但这将是一个非常突出的javascript。或者你认为这是正确的方法吗?@leonel:你只要调用$(x).one('click',function(){editRow(this.parentNode);})在适当的x
上,可能是$(e)。最近('tr')。查找('.editable_title')。一(…
其中e
是传递给editRow
的内容。我将使用标志解决方案。