3

このコード/マークアップをphpスクリプトと組み合わせて使用​​すると、phpスクリプトを介してファイルに設定されたオプションが入力された複数選択入力がレンダリングされます。目標は、ユーザーがオプションをクリックすると、テキストファイルが読み取られ、div $( "#txtbx")に出力されることです。これはmozillafirefoxで計画どおりに機能しますが、ie9は何も実行せず、エラーも出力もありません。コメントからわかるように、私はコードの終わりの部分を見つけました。私が最初に考えたように、これは.each()の問題ではなく、セレクターの問題でもありません(クラスによって直接参照しました:コメントを参照してください)。$(this)でもありません。私もテストしました... $(this)に添付されているイベントまたはイベント自体のようです。出力が$(this).click(f)を超えないため、出力がどこに行くかは関係ありません。ここで何が起こっているのか分かりますか?

<div id="txtbx">
</div>

<select id="REFselect" size="1">
<option class="REFoptions" value="./TXT/css.txt">css.txt</option>
<option class="REFoptions" value="./TXT/dns.txt">dns.txt</option>
</select>

$("#REFselect option").each(function () {
    $(this).click(function(){
        alert("test")
        /*
        $("#txtbx").load($(this).val(),function(responseTxt,statusTxt,xhr){
            $(this).html("<pre>"+responseTxt+"</pre>");
            if(statusTxt=="success")
              alert("External content loaded successfully!");
            if(statusTxt=="error")
              alert("Error: "+xhr.status+": "+xhr.statusText);

        });
        */
    });
});

これは動作するコードです。私はこのサイトを初めて使用するので、非常に良かったと答えてくれたすべての人に感謝したいと思います。適切なクレジットを付与する方法がわかりません。調査中です。また、古いコードがIEではなくFFで機能した理由を知りたいと思います。

$("#REFselect").change(function(){
        var select = $(this).val();

        $("#txtbx").load(select,function(responseTxt,statusTxt,xhr){
            $(this).html("<pre>"+responseTxt+"</pre>");
            if(statusTxt=="success")
              alert("External content loaded successfully!");
            if(statusTxt=="error")
              alert("Error: "+xhr.status+": "+xhr.statusText);  
        });
});
4

3 に答える 3

1
$("#REFselect").on("change", function() {
   $("#txtbx").load($(this).val(),function(responseTxt,statusTxt,xhr){
        $(this).html("<pre>"+responseTxt+"</pre>");
        if(statusTxt=="success")
          alert("External content loaded successfully!");
        if(statusTxt=="error")
          alert("Error: "+xhr.status+": "+xhr.statusText);

    });
});

.on()selectタグのすべてのオプションでイベントをバインドするために使用できます!また、bfavarettoが提案したようにイベントを変更します。

于 2013-01-22T16:23:24.173 に答える
1

私はそれが内側$(this)(おそらく<option>要素)だと思います。イベント<select>を使用して、から直接値を取得してみてください。change

$("#REFselect").change(function(){
     alert("test");
     $("#txtbx").load($(this).val(),function(responseTxt,statusTxt,xhr){
         $(this).html("<pre>"+responseTxt+"</pre>");
         if(statusTxt=="success")
             alert("External content loaded successfully!");
         if(statusTxt=="error")
             alert("Error: "+xhr.status+": "+xhr.statusText);

     });
});
于 2013-01-22T16:26:05.917 に答える
1

.clickハンドラーを要素(処理するイベント<option>がない)に関連付けています。click

要素の.changeイベントに設定してみてください。<select>

$("#REFselect").change(function (e) {
    alert("test")
    $("#txtbx").load($(this).val(), function (responseTxt, statusTxt, xhr) {
        $(this).html("<pre>" + responseTxt + "</pre>");
        if (statusTxt == "success") {
            alert("External content loaded successfully!");
        }
        if (statusTxt == "error") {
            alert("Error: " + xhr.status + ": " + xhr.statusText);
        }
    });
});
于 2013-01-22T16:27:24.790 に答える