1

これは私のメインページのhtmlです:

<script type="text/javascript" src="js/jquery.min.js"></script>
<div><a href="#" class="MyClick">Parent Click</a></div>
<div class="content"></div>
<script>
  $(document).ready(function(){ 
    $('.MyClick').click(function(){
       $('.content').load('page2.html');
    }); 
  })
</script>

これはpage2.htmlです

<a href="#" class="showoff">Child Click</a>
<script type="text/javascript">
 $(document).ready(function(){      
    $('.showoff').live('click',function(){
        console.log('I Clicked');
    });     
 });
</script>

リンクをparent clickクリックすると、ロードpage2.htmlされ、クリックされdiv.contentたときchild clickにコンソールのfirebugで印刷されます..

しかし、私の問題は、もう一度parent clickクリックしてもう一度クリックするchild clickと、コンソール印刷で2回クリックしますが、1回クリックすると、page2.htmlまだDOMから削除されずchild click、page2.htmlで新しいものと一緒に発射される前のようです..

page2.html一度クリックしただけで複数行が印刷されない回数をロードしたいChild click

4

1 に答える 1

1

ロードするたびにpage2.html、デリゲート クリック ハンドラーを.showoff使用してから登録します.live()(ちなみに、使用.on()または.delegate()バージョン < 1.7 では非推奨です)。これが、クリックごとに複数の印刷を取得する理由です。

特定の目的でライブを使用していますか? 私には不必要だと思われるので、要素自体でハンドラーを使用してください。

<a href="#" class="showoff">Child Click</a>
<script type="text/javascript">
 $(document).ready(function(){      
    $('.showoff').on('click',function(){
        console.log('I Clicked');
    });     
 });
</script>
于 2012-09-15T05:08:16.807 に答える