0

私は次のコードを持っています、私はjQueryライブとプラグインで試しましたが、ライブで試している間、クラス「ボタン」を持つ要素にすでに存在するイベントハンドラーを新しく追加された要素に追加できます(動的に追加されますページの読み込み後)クラス「ボタン」を使用しますが、プラグインでjQueryを試してみると、既存のイベントハンドラーを新しく追加された要素に追加できません。

ライブの例

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<!--START: Adding of javaScript library -->
<script type="text/javascript" src="script/jquery.min.js"></script>
<!--END:   Adding of javaScript library-->
<!--START: Adding of javaScript library need internet Connection-->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!--END: Adding of javaScript library need internet Connection-->
</head>
<script>
        jQuery(document).ready(function(){
            jQuery(".button").live("click", test);
        });
        var i=0;
        function test(event){
            var elem=jQuery(this).parent().html();
            jQuery("body").append("<div class=DivClass" + i++ +   ">"+elem+"</div>" );
        }
</script>
<body>
    <div id="Container"><input value="click me" class="button" type="button"/></div>
</body>
</html>

オンの例

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<!--START: Adding of javaScript library -->
<script type="text/javascript" src="script/jquery.min.js"></script>
<!--END:   Adding of javaScript library-->
<!--START: Adding of javaScript library need internet Connection-->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!--END: Adding of javaScript library need internet Connection-->
</head>
<script>
        jQuery(document).ready(function(){
            jQuery(".button").on("click", test);
        });
        var i=0;
        function test(event){
            var elem=jQuery(this).parent().html();
            jQuery("body").append("<div class=DivClass" + i++ +   ">"+elem+"</div>" );
        }
</script>
<body>
    <div id="Container"><input value="click me" class="button" type="button"/></div>
</body>
</html>

さらに、ライブを使用してjquery readyの外部でイベントハンドラーバインディングコードを配置することはできますが、jquery readyの外部でイベントハンドラーバインディングを使用すると、イベントハンドラーが機能しません。よろしくお願いします。

4

2 に答える 2

0

セレクターを動的にテストする場合は、定数の空のコレクションで関数を呼び出すコードのように、引数として渡す必要があります。

jQuery(document).ready(function(){
   var i=0;
   function test(event){
      var elem=jQuery(this).parent().html();
      jQuery("body").append("<div class=DivClass" + i++ +   ">"+elem+"</div>" );
    } 
   $(document).on("click", ".button", test);
});

(関数に渡す前にここで定義したことがわかりtestます。コードが目を痛めます)

于 2012-09-17T11:15:18.290 に答える
0
jQuery('body').on('click', '.button', test);
于 2012-09-17T11:21:39.567 に答える