0

我正在尝试将事件侦听器分配给动态加载的锚标记。该工具是一个简单的建议框,会在文本框下方弹出。首先,我为搜索框分配了一个 keyup 侦听器:

$('.question').keyup(function(e) {
    if (e.which != 13) {
        self.suggest($(this).val());
    }
});

然后,被调用的函数self.suggest

function suggest(text) {
    if (text.length > 0) {
        bkBtn.hide();
        waitImg.show();
        var d = document.createElement('div');
        d.className = 'suggest-box';
        var data = {}
        data.text = text;
        $.ajax({
            url: BASE_URL + '/urm8/suggest',
            type: 'POST',
            data: data,
            cache: false,
            success: function(markup) {
                waitImg.hide();
                if (markup.indexOf('##none##') != -1 || markup.length == 0) {
                    $(d).hide();
                }
                else {

                    $(d).append(markup);
                    $('.content').append(d);
                }
            },
            error: function(e) {
                waitImg.hide();
                alert('error');
                $('.content').html('');
                $('.content').append(e.responseText);
            }
        })   
    }
}

我在文档加载时将此功能分配给.suggest-link选择器:

$('.suggest-link').live('click', function(e) {
    var answerID = $(this).attr('id');
    alert(id)
    self.updateBackStack();

    $(document).find('.suggest-box').remove();
    $('.content').blindRightToggle('fast', undefined, function() {
        self.appendAnswer(false, answerID);
    }); 
});

这里没有alert被解雇。我不确定如何以这种方式附加事件侦听器,将不胜感激。

此外,我使用的是 10 分钟前最新的稳定 jQuery。

4

1 回答 1

2

使用 'on' 而不是 'live' 并将事件处理委托给父元素,例如:

$('#parent').on("click", "#child", function() {});

也可以看看:

jQuery .live() 与 .on() 方法在加载动态 html 后添加点击事件

于 2012-12-03T22:06:21.170 回答