JQuery没有拿起点击事件

时间:2012-12-03 22:02:29

标签: jquery

我正在尝试将事件侦听器分配给动态加载的锚标记。该工具是一个简单的建议框,弹出文本框下方。首先,我将一个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。

1 个答案:

答案 0 :(得分:2)

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

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

另见:

jQuery .live() vs .on() method for adding a click event after loading dynamic html