2016-09-07 10 views
2

2つのalert()ボックスを表示するjqueryコードに続いて。どうして?Jquery resize()APIの混乱

私の質問は、resize()がトリガーした後にカスタムイベントを呼び出す(イベント名が "resize"で始まる)理由です。

jQueryのバージョン:1.12.4

答えて

3

あなたのコード例は、2つのイベントをバインドresizeイベントにバインドされています

jQueryのイベントの宣言(resize.whatevername)は、あなたが後でそれをアンバインドするために、名前空間を提供することができますリスナーはresizeです。最初のものはresize()関数を使用し、2番目のものはbind()を使用します。どちらも基本的に同じです。 3番目のオプションはon()です。

唯一の違いは、2番目のリスナーにevent namenamespace間のドット(.)で区切らtestと呼ばれるnamespaceを与えたということです。しかしこれはまだresizeのイベントリスナーであり、カスタムイベントではありません!

名前空間は、イベントリスナーを分離またはグループ化するのに役立ちます。たとえば、特定のリスナーを削除することができます。

$(window).on("resize", function() { 
 
    console.log("- resize"); 
 
}); 
 

 
$(window).on("resize.test", function() { 
 
    console.log("- resize.test"); 
 
}); 
 

 
// trigger resize 
 
console.log("first trigger:"); 
 
$(window).trigger("resize"); 
 

 
// remove all listeners with '.test' namespace 
 
$(window).off(".test"); // or more specific: $(window).off("resize.test"); 
 

 
// trigger resize again 
 
console.log("second trigger:"); 
 
$(window).trigger("resize");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Official event.namespace doc.

-1

resizeイベントがトリガされると、それはあなたがそれに結合したすべてのアクションの処理を開始します。

イベントに必要な数だけ機能をバインドできます。

$(window).unbind('resize.test') 

しかし、まだ

+0

これは**ありません**カスタムイベントです! – eisbehr