2014-03-14 69 views
2

这里添加事件

$(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

您需要知道'$(document)。on'绑定到'document',而不是目标选择器元素,它在事件发生时应用选择器* *。您需要将其从与其相连的同一级别删除。 –

+0

我找不到任何方法从同一级别删除。 – shiva

+0

Arun P Johny的答案似乎可行(删除任何点击的元素,然后删除按钮上的处理程序),但也许我们误解了你的问题。 **请解释所需的行为** –

回答

7

您需要通过事件取消绑定.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

+0

单击该按钮不应触发事件处理程序,但会在其他地方点击*应该*,但您已将其完全删除。 – Quentin

+0

这不适合我。 – shiva

+0

@Quentin我不明白你想说什么,OP 的解决方案是什么? –

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); 
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'); 
-1

试试这个:

$('.form-template-name').unbind("click"", event); 

,并定义为单击事件:

var event = function() { 
    $(this).hide(); 
    $('#form_name').removeClass('hide'); 
    $('#form_template_name') 
     .attr('placeholder', $(this).text()) 
     .focus(); 
}; 

然后使用它像之前。

0

试试这个。

$(document).off('click', '.form-template-name'); 
1

事件处理程序绑定到一个元素。您可以从它所连接的元素中解除绑定事件处理程序,但不能从后代元素中解除绑定,因为它不在其侦听的位置。

您可以:

  1. 检查事件对象的the target property(第一个参数事件处理函数)看到被点击什么元素,然后做任何事情之前return
  2. 将新的事件处理程序绑定到要停止触发事件的元素和prevent the event from continuing up the DOM