1

AJAX 呼び出しからクラスを持つ要素を作成しました。これらの作成されたオブジェクトにクリック イベントをバインドしようとしています。

AJAX create 要素と同じハンドラ クラスで要素を作成すると、問題なくバインドされます。ただし、ハンドラー要素が AJAX 呼び出しから作成される場合、それらは関数にバインドされません.click

要素がロードされるときに何か関係があると思います。.click()関数のプロミス ステートメントのようなものが必要ですか?

必要に応じて、ここに私のコードがあります。

要素を作成する

function runQuery(){

var url = 'http://www.nexthometown.com/index.php?option=com_singleprop&view=raw&format=raw';

$.ajax({
    url: url,
    dataType: 'json',
    success: function(data){ 
        $.each(data, function (key, value){
            var agentuid = value[0];
            var mlsnum = value[1];
            var address = value[5] + ' ' + value[6] + ' ' + value[7];
            var city = value[9];
            var state = value[10];
            var zip = value[11];
            $('#ohs_table').append('<tr><td>' + mlsnum + '</td><td>' + address + ' ' + city + ' ' + zip + '</td><td><div class="media_button">QRCode</div><div class="f_button media_button" value="' + mlsnum + '">Flyer</div></td></tr>');
        });
    },
    error: function(jqXHR, error, errorThrown) {  
        alert(jqXHR.responseText); 
    }
});


};

.click機能_

$('.f_button').click(function(){
    $('#test').html('<h1>Hello!</h1>');
});
4

1 に答える 1

3

$('.f_button')selector を呼び出したときに存在する要素のコレクションを返します。新しい要素は考慮されません。

のイベント委任構文を使用して、既存の親要素にイベントを.on()アタッチします。click

$('#ohs_table').on('click', '.f_button', function(){
    $('#test').html('<h1>Hello!</h1>');
});
于 2013-01-17T20:48:05.807 に答える