You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery无法检测动态追加HTML元素的点击事件问题

实时搜索动态生成元素点击失效问题

我做了一个带实时搜索功能的文本框,静态HTML里的元素点击能正常输出日志,但通过搜索框把完全相同结构的代码追加到#tag-result后,新生成的元素点击功能就失效了。其他场景用同类代码都正常,唯独这里出问题——甚至把代码里的"tag"相关替换成"user"就能正常运行。

// 原帖漏写了.blur事件...
$('#txttagSearch').blur(function() {
    $(this).val('');
    $('#tag-search-results').hide();
})

// 把上面代码换成下面这段后
$(document).mouseup(function(e) {
    $('#txtTagSearch').val('');
    $('#tag-search-results').hide();
})

// 现在点击能被识别,搜索结果也能正常隐藏了。
<div class="form-floating">
    <input type="text" class="form-control" id="txtTagSearch" name="txtTagSearch" placeholder="Search to Add Tags" autocomplete="off">
    <label for="txtTagSearch">Search to Add Tags</label>
</div>
<div class="tag-wrapper">
    <div id="tag-search-results">
        <ul id="tag-result">
            <li class="tag-search-click 5">leather</li> <!-- 这个点击有效 -->
        </ul>
    </div>
    <div class="row gx-2 mt-3">
        <div class="col" id="tag-display">
            <div class="tag" style="background-color: #000;">sunglasses</div>
        </div>
    </div>
</div>
$('#txtTagSearch').keyup(function() {
    liveSearchTag($(this).val())
    $('#tag-search-results').show();
})

$('#model-tag-results #tag-result').mousedown(function(e) {
    e.preventDefault();
})

function liveSearchTag(keyword) {
    $.ajax({
        url: 'server/tag-search.php',
        type: 'GET',
        data: { keyword: keyword },
        dataType: 'json',
        success: function(result) {
            const divTagResult = $('#tag-search-results #tag-result');
            let html = '';
            if (result !== null) {
                if (result.length > 0) {
                    $.each(result, function(index, item) {
                        html += '<li class="tag-search-click ' + item['id'] + '">' + item['tag'] + '</li>' // 这些生成的li点击没反应?
                    })
                } else {
                    let html = '<li style="padding: 10px;">NO RESULT FOUND</li>';
                }
            } else {
                let html = '<li style="padding: 10px;">NO RESULT FOUND</li>';
            }
            divTagResult.html(html);
        }
    })
}

$('#tag-search-results').on('click','.tag-search-click',function() {
    console.log('test');
    var tagID = $(this).attr('class').replace('tag-search-click ','');

    $.ajax({
        url: 'server/tag-result.php',
        type: 'GET',
        data: { code: tagID },
        dataType: 'json',
        success: function(data) {
            $('#tag-display').append('test');
            $('#txtTagSearch').val('');
            $('#txtTagSearch').blur();
            $('#tag-search-results').hide();
        }
    })
})

我试过几种点击绑定写法,都无法触发新生成元素的点击事件:

$('#tag-search-results').on('click','.tag-search-click',function() {
$(document).on('click','.tag-search-click',function() {
$('.tag-search-click').click(function() {

内容的提问来源于stack exchange,提问作者Joshua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:55:31