1

コンソールで「aaa」を印刷しますが、$( "#test")をクリックして「bbb」を印刷することはできません。

私が犯しているその間違い?どんな提案でも大歓迎です。ありがとうございました。英語が下手でごめんなさい。

main.js:

$("#load").click(function () {
    $.post("second.php",function(data){
        $('#result').html(data);
    });
    return false;
});

main.html:

...
<div id="result"></div>
...

second.php return:

<script>
$(document).ready(function() {
        try
        {
            console.log("aaa");
            $("#test").click(function () {
                console.log("bbb");
                return false;
            });
        }catch(e){}
    });
</script>

<div>hello</div>
<a id="test" href="#">Test</a>
4

1 に答える 1

1

問題はdocument.ready、メインページですでに発生していることです。これは、AJAX内のコードは、でラップされている場合でもすぐに起動することを意味しますdocument.ready。コードが参照するhtmlの前にある場合、htmlが存在する前にコードが起動します

同じhtmlの後にコードを配置すると、機能します。

on()別の方法は、ページの読み込み時に存在しない将来の要素にイベントハンドラーを委任するために使用することです。Uouはメインページで使用できon()、メインページが読み込まれたときに実行できます

委任の例

$(document).on('click','#test', function(){

   console.log('bbbb');
   return false;
});
于 2012-12-22T23:44:50.673 に答える