グローバルプラグイン(または少なくとも、より幅広いイベントにバインドするプラグイン)があるシナリオがあるとします。
このプラグインはセレクターを受け取り、ライブクリックをそれにバインドします。次のように見える可能性のある疑似jqueryの何か:
$.fn.changeSomething = function(){
$(this).live("change", function(){ alert("yo");});
}
別のページに、次のような追加のライブバインディングがあります。
$("input[type='checkbox']").live("click", function(){alert("ho");});
このシナリオでは、チェックボックスは理想的には両方のライブイベントにバインドされます。
私が見ているのは、変更イベントが正常に発生し、「よ」と警告されていることです。ただし、このライブクリックイベントを使用して、トリガーすることはありません。ただし、明示的なクリックバインディングを使用して、私はそれをヒットします。
簡単な回避策は、ライブ変更ハンドラーの最後でクリックイベントをトリガーすることですが、これは私にはぎこちないようです。何か案は?
これはjquery1.4.2を使用しており、IE8でのみ発生することに注意してください(6/7もそうなると思いましたが、テストしていません)。
例(jquery-1.4.2.min.jsが必要です):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.fn.changeSomething = function(){
var t = $(this);
t.live("change", function(){
alert("yo");
});
};
$(document).ready(function(){
$("input[type='checkbox']").changeSomething();
$("#special").live("click", function(){
alert("ho");
});
});
</script>
</head>
<body>
<form>
<input type="checkbox" id="cbx" />
<input type="checkbox" id="special" />
</form>
</body>
</html>