live()メソッドの使い方の詳細

4976 ワード

Live()メソッドの使い方の詳細:このメソッドのjQueryでの使用率はかなり高く,独特の特徴を有し,その文法構造上このメソッドの独特な点が見られないので,次のメソッドの使い方を例によって詳しく紹介する.コードの例を見てみましょう.
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>    </title>
<style type="text/css">
span{
  color:green;
  font-size:12px;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){ 
  $("div").live("click",function(){ 
    $("span").text("     "); 
  }) 
}) 
</script>
</head>
<body>
<div>    </div>
<span></span>
</body>
</html>

以上のコードでは、divをクリックするとイベント処理関数が実行され、jQuery APIマニュアルの冒頭で述べたように、span要素のテキスト内容が設定されます.この方法では、マッチング要素にイベント処理関数を追加できますが、実際にはそうではありません.イベント処理関数は、マッチングしたdiv要素にバインドされるのではなく、DOMツリーの最上位documentにバインドされます.イベントがdocumentノードにバブルしている場合、イベントがclickイベントであるかどうか、およびイベントのトリガ要素がdivであるかどうかを確認し、条件が満たされている場合、追加のイベント処理関数を実行します.Live()メソッドの実装方式はイベント依頼であり,コードの実行効率の向上に大きく役立つ.もちろん、イベント処理方法はdocument要素にのみ役立つわけではなく、バインドするDOM要素を人為的に指定することができます.コードの例は次のとおりです.
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>    </title>
<style type="text/css">
span{
  color:green;
  font-size:12px;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){ 
  $("p",$("#myul")[0]).live("click",function(){ 
    $("span").text("     "); 
  }) 
}) 
</script>
</head>
<body>
<div>
  <ul id="myul">
    <li>
      <p>    </p>
    </li>
  </ul>
</div>
<span></span>
</body>
</html>

以上のコードは、documentではなくulにイベント処理関数をバインドします.
新しく追加された要素にも有効です.実際の応用では、条件に応じて新しい要素を追加する必要がある場合があります.live()メソッドは、新しく追加されたマッチング要素にも有効です.コードの例は次のとおりです.
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>    </title>
<style type="text/css">
span{
  color:green;
  font-size:12px;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){ 
  $("div").live("click",function(){ 
    $("span").text("     "); 
  }) 
  $("button").click(function(){ 
    $("span").after("<div>      </div>"); 
  }) 
}) 
</script>
</head>
<body>
<div>    </div>
<span></span>
<button>     </button>
</body>
</html>

新しく追加したdiv要素をクリックしてもspan要素のテキスト内容を設定できるので、live()メソッドは新しく追加した要素にも有効であり、bind()はできません.
event.stopPropagation()live()のイベントの泡を止めることはできません:
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>    </title>
<style type="text/css">
span{
  color:green;
  font-size:12px;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){ 
  $("p").live("click",function(e){ 
    e.stopPropagation(); 
    $("span").text("     "); 
  }) 
}) 
</script>
</head>
<body>
<div>
  <ul id="myul">
    <li>
      <p>    </p>
    </li>
  </ul>
</div>
<span></span>
</body>
</html>

以上のコードから,e.stopPropagation()はイベント処理関数の実行を阻止していないため,イベントバブルを阻止していないことが分かる.
原文の住所は次のとおりです.http://www.softwhy.com/forum.php?mod=viewthread&tid=5818
詳細については、次の項目を参照してください.http://www.softwhy.com/jquery/