次のコードを見ました。
$('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
と、3 つの機能 ( f
、g
、h
) が起動します。から関数を削除g
しますclick
。どうやってするか?ありえない。ただし、名前空間を使用すると、次のようになります。
$('#element').on('click.type1', f);
$('#element').on('click.type2', g);
$('#element').on('click.type1', h);
ご覧のとおり、 and をグループに入れf
、h
別g
のグループに入れてから、要素からバインドを解除できます。
$('#element').off('click.type2');
参考文献:
smoothscroll
この場合は名前空間です。したがって、クリックイベントを削除したいが、添付されている他のイベントに影響を与えたくない場合は、次のように呼び出すことで安全に実行できます。
$('a[href^="#"]').off('click.smoothscroll');
その名前空間の要素に関連付けられているすべてのイベントを削除するには、次のように呼び出します。
$('a[href^="#"]').off('.smoothscroll');