javascript - 在由 innerHTML 生成的标签上触发 jQuery 事件

标签 javascript jquery html

我使用 JavaScript 循环为列表创建 HTML 代码,示例:

if (thisList.length > 0) {
    var myList = "";
    for (var i = 0; i < thisList.length; i++) {
        myList += '<li>Item ' + i + '</li>';
    }

    var myListBox = document.getElementById('my-list').innerHTML = myList;
}

然后我使用以下方法插入 HTML 代码:

<ul id="my-list" ></ul>

因此呈现的 HTML 将类似于:

<ul id="my-list" >
    <li>Item 0</li>
    <li>Item 1</li>
</ul>

我的问题:我无法在 ul#my-list 内的标签上触发 jQuery 事件。例如,以下 jQuery 代码对 li 标签没有影响。

$(document).ready(function(){
    $('li').click(function() {
        $(this).hide();
});

如何在这些标签上触发 jQuery 事件?提前致谢。

最佳答案

问题是你的绑定(bind)函数是在元素渲染之前发生的,所以jquery没有什么可以绑定(bind)的。您需要一种更好的方法,例如检查何时从 my-list 节点单击 li。

如果你看

$(document).ready(function(){
    $('li') //this will have length 0 since the elements are not in the DOM tree yet.
});

您正在寻找https://api.jquery.com/on/

$(function(){
    $('#my-list').on('click', 'li',function() {
        $(this).hide();
    });
});

$(function(){})$(document).ready

的简写

关于javascript - 在由 innerHTML 生成的标签上触发 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708067/

相关文章:

html - 通过 CSS 的 Unicode :before

javascript - 你怎么称呼这个 JavaScript 语法,所以我可以研究它?

javascript - 使用R自动读取用javascript编写的动态表的内容

javascript - 播放声音并提醒

JQuery UI 可调整大小无法以编程方式取消调整大小

javascript - 使用 bootstrap-confirmation 进入更新面板

html - 链接按钮的宽度在 div 菜单外有效,但在内部无效?

html - 错误菜单下拉 css html <nav> <ul>

javascript - 如何知道创建了多少个动态 HTML 控件?

javascript - forEach 适用于 querySelectorAll,但不适用于 getElementsByTagName?