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);
  • [!]fgを無名h関数と見なします: function () { }

ご覧のとおり、 をクリックする#elementと、3 つの機能 ( fgh) が起動します。から関数を削除gしますclick。どうやってするか?ありえない。ただし、名前空間を使用すると、次のようになります。

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

ご覧のとおり、 and をグループに入れfhgのグループに入れてから、要素からバインドを解除できます。

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

参考文献:

  • .on()- jQuery API ドキュメント
  • .off()- jQuery API ドキュメント
于 2013-05-28T14:59:31.030 に答える
2

smoothscrollこの場合は名前空間です。したがって、クリックイベントを削除したいが、添付されている他のイベントに影響を与えたくない場合は、次のように呼び出すことで安全に実行できます。

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

その名前空間の要素に関連付けられているすべてのイベントを削除するには、次のように呼び出します。

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