0

我看过以下代码:

$('a[href^="#"]').on('click.smoothscroll',function(e) {...}

我不明白 click.something 是什么。我知道这样的功能:

$('a[href^="#"]').on('click',function(e) {...}

什么东西/平滑滚动在做什么?这是一种事件吗?

4

2 回答 2

5

这是您的事件处理程序的命名空间,考虑到您的元素有多个处理程序:

$('#element').on('click', f);
$('#element').on('click', g);
$('#element').on('click', h);
  • [!]考虑f, g,h作为匿名函数:function () { }.

如您所见,如果单击,将触发#element三个函数(fg、 )。h现在你想g从你的click. 怎么做?这是不可能的。但是如果你用它做一个命名空间:

$('#element').on('click.type1', f);
$('#element').on('click.type2', g);
$('#element').on('click.type1', h);

如您所见,我将fandh放在一个组中,然后g在另一个组中,然后我可以将它与我的元素解除绑定:

$('#element').off('click.type2');

参考:

于 2013-05-28T14:59:31.030 回答
2

smoothscroll在这种情况下是一个命名空间。因此,如果您想删除点击事件,但又不想影响附加的其他事件,您可以安全地调用:

$('a[href^="#"]').off('click.smoothscroll');

要删除附加到该命名空间中元素的所有事件,只需调用:

$('a[href^="#"]').off('.smoothscroll');
于 2013-05-28T14:57:29.313 回答