我有一个附加到一个类的事件处理程序,如下所示:
$('#container').on('click', '.myClass', function (e) {...
在此处理程序中,我想将不同的单击处理程序附加到已单击的元素。单击临时处理程序后,我想重新启用原始处理程序。
我正在尝试做的(如this fiddle所示)是允许单击一段文本,将其更改为输入文本框,然后提交更改以重新创建文本。
我尝试了以下操作,但在小提琴中没有成功:
$('#container').on('click', '.submit', function (e) {
var $this = $(this),
new_text = $this.prev().val();
e.stopPropagation();
$this.parent().off('click.temp').html(new_text);
});
$('#container').on('click', '.test', function (e) {
var $this = $(this);
$this.html("<input type='text' value='" + $this.text() + "'/><input class='submit' value='Submit' type='submit'>");
$this.on('click.temp', function (e) {
e.stopPropagation();
});
});
使用 an.off()
似乎不会取消类上的原始处理程序,因为它附加到类而不是元素。
我想我已经部分回答了我的问题e.stopPropagation()
,但它仍然不是很有效,我不相信我会以最好的方式解决这个问题:)
注意:这篇文章与想法有关,但不使用this
.