2016-04-22 17 views
2

私はドロップダウン値に従ってdivを表示/非表示にする必要があるプロジェクトに取り組んでいます。表示/非表示は、同じページで実行するとうまく動作しますが、AJAXがロードされた関数でこれを試しても失敗します。jQueryがAJAXをロードしたコンテンツでdivコンテンツを表示/非表示にしていません

私には分からないものがあることを願っています。

つまり、AJAXを読み込んだページでオプションを選択すると、divを表示/非表示にしたいと考えています。

のindex.php

<html> 

<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 

    <script> 
    function showUser(str) { 
     if (str == "") { 
      document.getElementById("txtHint").innerHTML = ""; 
      return; 
     } else { 
      if (window.XMLHttpRequest) { 
       // code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp = new XMLHttpRequest(); 
      } else { 
       // code for IE6, IE5 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange = function() { 
       if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
       } 
      }; 
      xmlhttp.open("GET","getdata.php?q="+str,true); 
      xmlhttp.send(); 
     } 
    } 
    </script> 
</head> 

<body> 
    <form> 
     <!-- there is nothing related to it... it's here because I have copied it from the w3schools website --> 
     <select name="users" onchange="showUser(this.value)"> 
      <option value="">Select a person:</option> 
      <option value="1">getdata</option> 
     </select> 
    </form> 
    <br><br><br> 
    <div id="txtHint" style="background-color: #CCCCCC"><b> ajax data will listed here</b></div> 
</body> 
</html> 

getdata.php

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
</head> 
<body> 
    <p> its page2</p> 
    <select name="type" id="type" > 
     <option value="1show" >show div 1</option> 
     <option value="2show" >show div 1 </option> 
    </select> 

    <div id="div1" style="display:none"> 
     div1 data 
    </div> 
    <div id="div2" style="display:none"> 
     div 2 data 
    </div> 
</body> 
</html> 

<script> 
$('#type').on('change', function() { 
    if (this.value == '1show') { 
     $("#div1").show(); 
     $("#div2").hide(); 
    } else if(this.value == '2show') { 
     $("#div1").hide(); 
     $("#div2").show(); 
    } 
}); 
</script> 
+0

使用$(文書).on( "変更"、 "#型"、関数(){})を試みます。 –

+0

AjaxのコンテンツはDOM構造体にありません。したがって、直接呼び出すことで、探しているものを見つけることはできません。既存の親要素から検索を開始することができます... – Naruto

+0

あなたは何をしているのかわかりません。しかし、あなたはおそらくjquery自身のajax関数を見たいと思っています。http://api.jquery.com/jQuery.ajax/ –

答えて

0

イベントをドキュメントにバインドする必要があります。

$(document).on('change','#type' ,function() { 
    if (this.value == '1show') { 
     $("#div1").show(); 
     $("#div2").hide(); 
    } else if(this.value == '2show') { 
     $("#div1").hide(); 
     $("#div2").show(); 
    } 
}); 
+0

私はちょうどajax 1データファイルと2-jsファイルを使用して両方のファイルを別々に読み込み、jsファイルではあなたのコード$(document).on( 'change {これは私のAJAXではinnerHTMLをロードしてHTMLだけをロードするようにしていたので、私は思っていたことです。 –

+0

助けてください:) – Filchev

0

は、HTMLデータのindex.php負荷のAJAXであってもよいです。だから私はすべてのスクリプトを含む別のファイルを作成し、それは正常に動作します。それがなぜ起こるのかを専門家が説明するのを待っています。

これはjsデータを含んでいます これは最初のajaxが $( "#box")と呼ばれた後にインデックスページのjsファイルを呼び出す方法です。load( "ab.js");