假设我有这段HTML代码:
'C'
每当我单击“插件1”时,就会在Content div中生成一个表,该表头包含“插件1选项1”,“插件1选项2”等。其中的字符串以及插件选项子菜单的“显示”属性均已打开以“阻止”。 我想向“插件1选项1/2”元素添加事件侦听器,以便页面将滚动到具有相同值的表头元素。
该如何做,因为表的元素是在页面加载后创建的?
编辑1:向不存在的元素添加事件处理程序不是问题,因为它们是在一开始就创建的。这里的问题是我想向现有元素添加事件处理程序,该事件处理程序将操纵将来将要创建的元素。这是我的代码中的一个示例:
print(data.shape)
group_button从开始就存在,其中table_element是动态生成的。此外,我通过在生成表时将其传递给控制台来检查$('th:contains(“'+ plugin_name +'”)')是否是正确的选择器。
答案 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();
});