0

我已经通过 innerHTML 加载了一些内容。

    $('#load-text-button').click(function () {
         document.getElementById("text-area").innerHTML="Some text <span class="footnote">The Footnote</span> Some other text.
    });

现在我想在单击“粗体脚注按钮”时访问新创建的跨度(带有“脚注”类)。脚注按钮是在文档加载时加载的,但文本是在加载 DOM 之后加载的。

    $('#bold-footnote-button').click(function () {
        $(".footnote").addClass('bold');
    });

找不到“.footnote”元素。我读过的所有内容都指向使用 .live 方法,但文档说它现在已被弃用。如何访问新的“.footnote”元素而无需直接单击它?

4

2 回答 2

1

click 函数应该可以正常工作,因为您不是使用事件处理程序来定位新插入的元素,而是在事件处理程序内部。问题可能是没有插入这样的元素,因为您在引用时遇到了一些问题,请这样做:

$('#load-text-button').click(function () {
    $("#text-area").html('Some text <span class="footnote">The Footnote</span> Some other text.');
});
于 2013-02-24T18:48:09.740 回答
0

也许我遗漏了一些东西,但是如果您在第一次单击()时更改您的 html,当您要求 $(".footnote") 时,您应该会找到新创建的跨度。有时 DOM 修改和 DOM 查询之间存在延迟问题,但只有当您一个接一个地编写语句时才会出现这些问题。在您的情况下,当用户转到#bold-footnote-button 时,浏览器一直在自我更新。也许问题是您在第一个示例中对字符串和类属性使用了双引号。

检查您的浏览器开发工具是否正确获取类属性

于 2013-02-24T18:50:44.783 回答