0

現在、はいボタンといいえボタンで囲まdivれたページがあります。IDボタンが選択されると、jQuery は呼び出したファイル内の情報IDを置き換えます。add_song.php

アーティストが変更されると、ページのドロップダウンにライブchangeとライブkeyupがあり、アーティスト ID が変更されadd_song.phpます。問題は、はいまたはいいえを選択しているときに、アーティスト名を変更するとロードされますadd_song.php

/でアーティストが変更されたときにロードするのではなく、[はい] または [いいえ] ボタンをクリックした後にロードされているときにのみ、アーティストを許可changekeyupて変更するにはどうすればよいですか。add_song.phpchangekeyup

PHPは次のとおりです。

echo '<span class="edit-buttons"><input type="submit" value="yes" id="add_existing_song"></span>';
echo '<span style="padding-left:10px" class="edit-buttons"><input type="submit" value="no" id="add_new_song"></span>';
echo '<div id="display_add_new_song"></div>';

申し訳ありませんが、ここにjqueryコードがあります:

$(document).ready(function(){
      $("#add_new_song").live("click", function() {
      var artistid = $("#artist").val();
      $("#display_add_new_song").load("php/add_song_new.php?var1=" + artistid);
});
});

$(document).ready(function(){
      $("#artist").change(function() {
      var artistid = $("#artist").val();
      $("#display_add_new_song").load("php/add_song_new.php?var1=" + artistid);
});
});

$(document).ready(function(){
      $("#artist").keyup(function() {
      var artistid = $("#artist").val();
      $("#display_add_new_song").load("php/add_song_new.php?var1=" + artistid);
});
});
4

1 に答える 1

0

keyup/のイベント バインディングをコールバック関数に移動する必要がchangeあり.load ます.loadコンテンツがロードされた直後に実行されるコールバックである 2 番目のパラメータを取ることができます。これにより、コンテンツをロードした#artist直後にイベントをバインドできます。

また、ドキュメントの準備ができた後に実行される JavaScript を 1 つのブロックにマージしたり、同じ機能にバインドしたいイベントを結合したりできます。これにより、スクリプト内の重複したコードが少し削除されます。

コードを考慮して、次のように変更する必要があります。

$(document).ready(function(){
    $("#add_new_song").live("click", function() {
        var artistid = $("#artist").val();
        $("#display_add_new_song").load("php/add_song_new.php?var1=" + artistid, function(){
            $("#artist").on("keyup change", function() {
                var artistid = $("#artist").val();
                $("#display_add_new_song").load("php/add_song_new.php?var1=" + artistid);
            });
        });
    });
});
于 2012-06-14T21:19:05.013 に答える