ホームページ >ウェブフロントエンド >jsチュートリアル >on を使用して jQuery でイベントをバインドする場合、何に注意する必要がありますか?

on を使用して jQuery でイベントをバインドする場合、何に注意する必要がありますか?

小云云
小云云オリジナル
2018-01-22 11:21:081297ブラウズ

jQuery のバージョンの更新により、以前のバージョンの Bind()、live()、delegate() イベントは直接 on に置き換えられるようになりました。このノートでは、クリック イベントのみを例として取り上げ、主に使用方法を検討します。 on イベントの概要: この記事では主に紹介しています。 この記事では、jQuery でイベントをバインドするために on を使用する際に注意する必要があることについて説明します。非常に参考値が高いです。以下のエディターで見てみましょう。皆さんのお役に立てれば幸いです。

1. on を使用して、クリック イベントが正常にトリガーされる前に追加された DOM を監視する:


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
 #test {
 height: 100px;
 font-size: 50px;
 color: yellow;
 line-height: 100px;
 background-color: red;
 text-align: center;
 }
</style>
<script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script>
<script>
 $( function(){
 var op = $(&#39;<p id="test">点我</p>&#39;);
 $(document.body).append(op);
 $("#test").on(&#39;click&#39;, function(){
 alert(&#39;这是事件前添加的DOM,可以正常触发点击事件&#39;);
 });
 } );
</script>
</head>
<body>
 <p id="wrap"></p>
</body>
</html>

2. on を使用して、クリック イベントが正常にトリガーされない後に追加された DOM を監視する:


<!-- 一、正常的DOM: -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
 #test {
 height: 100px;
 font-size: 50px;
 color: yellow;
 line-height: 100px;
 background-color: red;
 text-align: center;
 }
</style>
<script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script>
<script>
 $( function(){
 $("#test").on(&#39;click&#39;, function(){
 alert(&#39;这是事件后添加的DOM,无法正常触发点击事件&#39;);
 });
 var op = $(&#39;<p id="test">点我</p>&#39;);
 $(document.body).append(op);
 } );
</script>
</head>
<body>
 <p id="wrap"></p>
</body>
</html>

3. 解決策: イベント委任を使用します。委任されたオブジェクトは DOM にすでに存在しているか、イベントの前に動的に追加されている必要があることに注意してください。それ以外の場合は、次のようにイベントをトリガーできます。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
 #test {
 height: 100px;
 font-size: 50px;
 color: yellow;
 line-height: 100px;
 background-color: red;
 text-align: center;
 }
</style>
<script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script>
<script>
 $( function(){
 var oWrap = $(&#39;<p id="wrap"></p>&#39;);
 $(document.body).append(oWrap);
 $("#wrap").on(&#39;click&#39;, $(&#39;#test&#39;), function(){
 alert(&#39;委托对象在事件前添加,可以正常触发点击事件&#39;);
 });
 var op = $(&#39;<p id="test">点我</p>&#39;);
 $("#wrap").append(op);
 } );
</script>
</head>
<body>
</body>
</html>


4. 委任 オブジェクトはイベントの後に追加され、クリック イベントはトリガーできません

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
 #test {
 height: 100px;
 font-size: 50px;
 color: yellow;
 line-height: 100px;
 background-color: red;
 text-align: center;
 }
</style>
<script src="http://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script>
<script>
 $( function(){
 $("#wrap").on(&#39;click&#39;, $(&#39;#test&#39;), function(){
 alert(&#39;委托对象在事件后添加,无法正常触发点击事件&#39;);
 });
 var oWrap = $(&#39;<p id="wrap"></p>&#39;);
 $(document.body).append(oWrap);
 var op = $(&#39;<p id="test">点我</p>&#39;);
 $("#wrap").append(op);
 } );
</script>
</head>
<body>
</body>
</html>


5. 説明: 仕事では、on イベントはイベント バインディングとイベントでよく使用されます。委任、少なくとも私はもっと遭遇しました。ライブ イベントの使用。主な理由は、前の jQuery オブジェクトが $(document).on() などのドキュメントになっているためです。そのため、別の例は示しません。

関連する推奨事項:

jqueryのappend要素の無効なIDバインディングイベントの解決策

ループ内のJQueryバインディングイベントの問題の詳細な説明

イベント関数の使用法の詳細な説明JavaScript のイベント属性を使用したバインディング

以上がon を使用して jQuery でイベントをバインドする場合、何に注意する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。