我看过以下代码:
$('a[href^="#"]').on('click.smoothscroll',function(e) {...}
我不明白 click.something 是什么。我知道这样的功能:
$('a[href^="#"]').on('click',function(e) {...}
什么东西/平滑滚动在做什么?这是一种事件吗?
我看过以下代码:
$('a[href^="#"]').on('click.smoothscroll',function(e) {...}
我不明白 click.something 是什么。我知道这样的功能:
$('a[href^="#"]').on('click',function(e) {...}
什么东西/平滑滚动在做什么?这是一种事件吗?
这是您的事件处理程序的命名空间,考虑到您的元素有多个处理程序:
$('#element').on('click', f);
$('#element').on('click', g);
$('#element').on('click', h);
[!]
考虑f
, g
,h
作为匿名函数:function () { }
.如您所见,如果单击,将触发#element
三个函数(f
、g
、 )。h
现在你想g
从你的click
. 怎么做?这是不可能的。但是如果你用它做一个命名空间:
$('#element').on('click.type1', f);
$('#element').on('click.type2', g);
$('#element').on('click.type1', h);
如您所见,我将f
andh
放在一个组中,然后g
在另一个组中,然后我可以将它与我的元素解除绑定:
$('#element').off('click.type2');
参考:
smoothscroll
在这种情况下是一个命名空间。因此,如果您想删除点击事件,但又不想影响附加的其他事件,您可以安全地调用:
$('a[href^="#"]').off('click.smoothscroll');
要删除附加到该命名空间中元素的所有事件,只需调用:
$('a[href^="#"]').off('.smoothscroll');