live()メソッドの使い方の詳細
4976 ワード
Live()メソッドの使い方の詳細:このメソッドのjQueryでの使用率はかなり高く,独特の特徴を有し,その文法構造上このメソッドの独特な点が見られないので,次のメソッドの使い方を例によって詳しく紹介する.コードの例を見てみましょう.
以上のコードでは、divをクリックするとイベント処理関数が実行され、jQuery APIマニュアルの冒頭で述べたように、span要素のテキスト内容が設定されます.この方法では、マッチング要素にイベント処理関数を追加できますが、実際にはそうではありません.イベント処理関数は、マッチングしたdiv要素にバインドされるのではなく、DOMツリーの最上位documentにバインドされます.イベントがdocumentノードにバブルしている場合、イベントがclickイベントであるかどうか、およびイベントのトリガ要素がdivであるかどうかを確認し、条件が満たされている場合、追加のイベント処理関数を実行します.Live()メソッドの実装方式はイベント依頼であり,コードの実行効率の向上に大きく役立つ.もちろん、イベント処理方法はdocument要素にのみ役立つわけではなく、バインドするDOM要素を人為的に指定することができます.コードの例は次のとおりです.
以上のコードは、documentではなくulにイベント処理関数をバインドします.
新しく追加された要素にも有効です.実際の応用では、条件に応じて新しい要素を追加する必要がある場合があります.live()メソッドは、新しく追加されたマッチング要素にも有効です.コードの例は次のとおりです.
新しく追加したdiv要素をクリックしてもspan要素のテキスト内容を設定できるので、live()メソッドは新しく追加した要素にも有効であり、bind()はできません.
event.stopPropagation()live()のイベントの泡を止めることはできません:
以上のコードから,e.stopPropagation()はイベント処理関数の実行を阻止していないため,イベントバブルを阻止していないことが分かる.
原文の住所は次のとおりです.http://www.softwhy.com/forum.php?mod=viewthread&tid=5818
詳細については、次の項目を参照してください.http://www.softwhy.com/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/