事件监听器来操纵尚不存在的元素

时间:2019-02-05 15:16:57

标签: javascript

假设我有这段HT​​ML代码:

'C'

每当我单击“插件1”时,就会在Content div中生成一个表,该表头包含“插件1选项1”,“插件1选项2”等。其中的字符串以及插件选项子菜单的“显示”属性均已打开以“阻止”。 我想向“插件1选项1/2”元素添加事件侦听器,以便页面将滚动到具有相同值的表头元素。

该如何做,因为表的元素是在页面加载后创建的?

编辑1:向不存在的元素添加事件处理程序不是问题,因为它们是在一开始就创建的。这里的问题是我想向现有元素添加事件处理程序,该事件处理程序将操纵将来将要创建的元素。这是我的代码中的一个示例:

print(data.shape)

group_button从开始就存在,其中table_element是动态生成的。此外,我通过在生成表时将其传递给控制台来检查$('th:contains(“'+ plugin_name +'”)')是否是正确的选择器。

2 个答案:

答案 0 :(得分:0)

由于事件侦听器无法在呈现元素之前对其进行操作,因此可以安全地假设,只有在具有值之后才需要执行操作。

因此,您可以使用侦听器内部的选择器来访问DOM元素,而不必尝试存储将来可能呈现的元素的引用。

group_button.click(function () {
    var table_element = $('th:contains("' + plugin_name + '")');
    if(table_element.get(0))
        table_element.get(0).scrollIntoView();
});

这样,如果元素存在,它将被滚动到视图中。

答案 1 :(得分:0)

您需要使table_element在事件处理程序中是本地的。

group_button.click(function () {
    var table_element = $('th:contains("' + plugin_name + '")');
        table_element.get(0).scrollIntoView();
    });