获取javascript中元素的动态类
我有一个表,其中包含一堆tr元素,这些元素具有随机的、动态创建的ID,以及具有匹配ID的相应div。我想使用on('click')函数,以便在单击一个具有给定id的tr元素时,也可以通过javascript单击相应的div id 下表:获取javascript中元素的动态类,javascript,Javascript,我有一个表,其中包含一堆tr元素,这些元素具有随机的、动态创建的ID,以及具有匹配ID的相应div。我想使用on('click')函数,以便在单击一个具有给定id的tr元素时,也可以通过javascript单击相应的div id 下表: <tbody> <tr id="a94k5h3"></tr> <tr id="0f3l6k2"></tr> <tr id="44jg96a"></tr>
<tbody>
<tr id="a94k5h3"></tr>
<tr id="0f3l6k2"></tr>
<tr id="44jg96a"></tr>
</tbody>
上面的代码适用于第一个,但实际上我不知道id#a94k5h3是什么,或者会有多少tr/div。任何帮助都将不胜感激
-编辑
我正在使用knack,它动态创建所有html元素,这不是我的代码。我附上了一个可能的澄清输出图像。
[![在此处输入图像描述][1][1]
本质上,我在一个页面上有两次相同的html元素。当一个被单击时,我希望另一个也被单击。因为在一个页面上不能有重复的ID,所以我建议您使用
数据-*
属性,如下所示:
<tr data-id="#a94k5h3">
a94k5h3单击我
0f3l6k2单击我
44jg96a点击我
分区a94k5h3
分区0f3l6k2
第44jg96a分部
您的dom中不应该有重复的id,而应该有数据-*
属性。我选择了数据id
,但您可以抓取单击行的id,然后根据该id进行选择,它看起来像这样:
<tr data-id="#a94k5h3">
$(文档)。在('click','tr',(event)=>{
event.preventDefault()
let id=$(event.currentTarget.attr('id'))
$(`[data id=${id}]`).addClass('selected')。单击()
})
tr{背景色:红色}
div.selected{背景色:黄色}
点击我
点击我
点击我
1.
2.
3
添加TR元素单击处理程序,要单击相应的DIV元素,需要一个不涉及未知随机id
值的查询选择器。例如,根据控制台日志映像:
"#view_349 table.kn-table TBODY TR"
我假设DIV元素的选择器按照提供的方式工作
"#view_349 .kn-view.kn-map-results.view_349 #" + divId
然后TR元素单击侦听器函数可以使用被单击的TR元素的id
event.target.id
要使用JQuery查找相应的DIV元素,请执行以下操作:
$(document).on('click', "#view_347 TR" function(event) {
event.preventDefault();
var targetId = event.target.id;
$("#view_349 .kn-view.kn-map-results.view_349 #" + targetId).click();
});
这可能在JQuery中起作用,但忽略了一个事实,即具有相同id的两个元素不是有效的HTML,正如前面在注释和其他答案中讨论的那样。我建议在不重复完全相同的元素id值的情况下,研究生成HTML的可能性。属性
id
应该是唯一的。标记中的内容是一场即将发生的灾难。我已经简化了我的示例。有多个类与tr元素和div元素都关联。ID相同的原因是因为它们都包含相同的信息,只有一个在表中,一个在地图中。元素ID不应该是相同的,无论推理如何。啊,我看到了混淆。它们不是重复的ID,它们是相同的元素。@Drewschlictmann但在您的问题中,您用HTML声明并显示了您显式地拥有具有完全相同ID的
元素和
元素,并询问如何触发对与单击的对象共享相同ID的div的单击<代码>…因此,当单击一个具有给定id的tr元素时,也会通过javascript单击相应的div id…您能解释更多吗?tr和div基本上都包含来自数据库的相同记录。一个在表格中显示,另一个在地图中显示。单击表时,我希望单击映射表。基本上,假设我在一个页面上列出了两次相同的id,因为我想显示两次。我很抱歉说不清楚。@Drew我想你很难理解重复ID的含义。这意味着在一个页面中,您可以在两个或多个地方使用id=“blabla”
。照答案说的做。在一个地方使用ID——并使用数据属性和JS引用它。或者根本不使用Id。它们不是重复的Id,它们是相同的Id,基本上放在页面上两次。基本上,我所需要的就是当一个元素被点击时,任何其他的元素都应该被点击。我已经根据图片更新的结果改写了答案,希望它能有所帮助。从技术上讲,“重复id”意味着文档树中有多个元素具有相同的id值。
$(document).on('click', "#view_347 TR" function(event) {
event.preventDefault();
var targetId = event.target.id;
$("#view_349 .kn-view.kn-map-results.view_349 #" + targetId).click();
});