1

我使用 AJAX 调用中的类创建了元素。我正在尝试将单击事件绑定到这些创建的对象。

当我使用与 AJAX 创建元素相同的处理程序类创建元素时,它绑定得很好。但是,当从 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')返回调用选择器时存在的元素集合。它不会考虑新元素。

使用事件委托语法.on()并将click事件附加到已经存在的父元素:

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