以下是添加活动的代码
$(document).on({
click: function() {
$(this).hide();
$('#form_name').removeClass('hide');
$('#form_template_name')
.attr('placeholder', $(this).text())
.focus();
}
}, '.form-template-name');
对于某些情况,我不希望触发此事件。所以我试过的是
$('.form-template-name').off();
$('.form-template-name').unbind();
但似乎没有任何效果。我错过了什么吗?
答案 0 :(得分:12)
你需要将事件传递给解除绑定到.off(),还要看到使用namepsaced事件名称
$(document).on({
'click.myevent': function () {
$(this).hide();
$('#form_name').removeClass('hide');
$('#form_template_name')
.attr('placeholder', $(this).text())
.focus();
}
}, '.form-template-name');
和
$(document).off('click.myevent', '.form-template-name');
演示:Fiddle
答案 1 :(得分:2)
试试这个。
$(document).off('click', '.form-template-name');
答案 2 :(得分:1)
事件处理程序绑定到一个元素。您可以从附加到的元素中取消绑定事件处理程序,但是您不能将它从后代元素中取消绑定,因为它不是它正在侦听的位置。
你可以:
target
property(事件处理函数的第一个参数)以查看在执行任何操作之前单击了哪个元素然后return
。答案 3 :(得分:0)
您可以尝试:
var clickEvent = function() {
$(this).hide();
$('#form_name').removeClass('hide');
$('#form_template_name')
.attr('placeholder', $(this).text())
.focus();
};
$(document).on({
click: clickEvent
}, '.form-template-name');
与之解开:
$(document).unbind('click', clickEvent);
答案 4 :(得分:0)
将您的点击处理程序更改为:
$(document).on({
'click.myevent': function () {
$(this).hide();
$('#form_name').removeClass('hide');
$('#form_template_name')
.attr('placeholder', $(this).text())
.focus();
}
}, '.form-template-name');
然后您可以使用 .off() ,名称间隔为 event names :
$(document).off('click.myevent', '.form-template-name');
答案 5 :(得分:-1)
试试这个:
$('.form-template-name').unbind("click"", event);
并将click事件定义为:
var event = function() {
$(this).hide();
$('#form_name').removeClass('hide');
$('#form_template_name')
.attr('placeholder', $(this).text())
.focus();
};
然后像以前一样使用它。
答案 6 :(得分:-1)
您还可以尝试使用 event.preventDefault()功能。这里有更详细的描述:http://api.jquery.com/event.preventdefault/