2016-06-24 3 views
1

私は最近、w3school include htmlを使用していますので、同じdivをすべてのページにコピー&ペーストする必要はありません。w3schoolにはHTMLが含まれています。JavaScriptは正常に動作しません。

まず、私はいくつかのCSSスタイルを使用するヘッダーとフッターに使用しました。問題はなく、完璧に動作します。

しかし、私はいくつかのjavascriptを含むドロップダウンNavbarのためにもう一度使ってみましたが、HTMLは含まれていましたが、javascriptは私には当てはまりませんでした! javascriptに何も問題はありませんが、include HTMLを使用していないときはうまく動作します。ここでは、コード

$('#leftDrop1').on('click', function() { 
 
    if ($('#sub1').css('display') == 'block') { 
 

 
    $('#sub1').hide() 
 

 
    } else { 
 
    $("#sub1").show() 
 
    } 
 
}) 
 

 
$('#leftDrop2').on('click', function() { 
 
    if ($('#sub2').css('display') == 'block') { 
 

 
    $('#sub2').hide() 
 

 
    } else { 
 
    $("#sub2").show() 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<script src="http://www.w3schools.com/lib/w3data.js"></script> 
 

 
<div w3-include-html="dropdown.html"></div>

と、ここで私はこれがある場合、私は申し訳ありませんが、スニペットの2つのHTMLページを配置する方法を知らないdropdown.html

<div class="col-lg-3"> 
      <ul id="dropKiri"> 
       <li id="leftDrop1"><a class="dropIcon"><i class="fa fa-caret-right" aria-hidden="true"></i></a>Category 1</li> 
        <div id="sub1"><ul> 
         <li>Sub 1</li> 
         <li>Sub 2</li> 
         <li>Sub 3</li> 
        </ul></div> 

       <li id="leftDrop2"><a class="dropIcon"></a><i class="fa fa-caret-right" aria-hidden="true"></i></a>Category 2</li> 
        <div id="sub2"><ul> 
         <li>Sub 1</li> 
         <li>Sub 2</li> 
         <li>Sub 3</li> 
        </ul></div> 

       <li style="list-style-type: none;">Category 3</li> 
      </ul> 
     </div> 

内部のものだからです少し混乱します

答えて

3

あなたのイベントを委任する必要がありますビーコンw3schoolスクリプトはajaxを使用し、新しいアイテムをDOMに追加します

$('body').on('click','#leftDrop1',function() { 
    if ($('#sub1').css('display') == 'block') { 

    $('#sub1').hide() 

    } else { 
    $("#sub1").show() 
    } 
}) 

$('body').on('click','#leftDrop2',function() { 
    if ($('#sub2').css('display') == 'block') { 

    $('#sub2').hide() 

    } else { 
    $("#sub2").show() 
    } 
}) 
+0

うわー、それは、完全にmadalinに答えるためのおかげで動作します:D(PS:私はあなたの答えを受け入れるように4分以上待つ必要があります) –

+0

こんにちは、ちょうど 'トグルを(使用するために編集提案を拒否した)'代わりに'hide()'と 'show()'のどちらかを選択する必要があります。これは、トグルが実際の視界の状態に無関係になるための最良の選択であってはならないからです。 @ madalin-ivascuはそれを防弾的な方法で行いました:) –

+0

このソリューションは私にとっては似たようなケースで働いていましたが、私はコード行にどのように適用するのだろうと思いました:$( '#subscribe-button')。 addClass( '成功'); –

0

w3.includeHTMLw3.jsから、htmlがロードされた後のコールバックが可能です。

w3.includeHTML(function() { 
    $('#leftDrop1').on('click', function() { 
    if ($('#sub1').css('display') == 'block') { 
     $('#sub1').hide() 
    } else { 
     $("#sub1").show() 
    } 
    }) 
    $('#leftDrop2').on('click', function() { 
    if ($('#sub2').css('display') == 'block') { 
     $('#sub2').hide() 
    } else { 
     $("#sub2").show() 
    } 
    }) 
}); 
関連する問題