Javascript 添加特定元素的onclick事件(无id或类)

Javascript 添加特定元素的onclick事件(无id或类),javascript,jquery,Javascript,Jquery,我想在标记中获取属性值(数据资源id)。但此标记没有id或类。我只需要在单击时显示内部警报。这是我的代码: <table> <tbody> <div class="x"> <tr data-resource-id="first"> //will show alert "first" when clicked <tr data-resource-input="second">//show nothing when clicked <

我想在标记中获取属性值(数据资源id)。但此标记没有id或类。我只需要在单击时显示内部警报。这是我的代码:

<table>
<tbody>
<div class="x">
<tr data-resource-id="first"> //will show alert "first" when clicked
<tr data-resource-input="second">//show nothing when clicked
</div>
<div class="y">
<tr data-resource-id="first"> //show nothing when clicked
</div>

我不知道用“??”写什么代码。我应该写什么代码?

此更新版本的代码可能适合您

$(document).on('click', '.x [data-resource-id]', function() {
  const resourceId = $(this).attr('data-resource-id');
  alert(resourceId);
})
  • 注意,您的原始代码有一个名为
    资源id
    的变量,但连字符在javascript标识符中是非法的。因此,您必须将该变量名改为
    resourceId

  • “??”
    变成了
    “.x[数据资源id]”
    ,所以点击任何与该选择器匹配的内容都会被处理

  • var
    变为
    const
    用于良好测量

  • 修正的标签一致性


此更新版本的代码可能适合您

$(document).on('click', '.x [data-resource-id]', function() {
  const resourceId = $(this).attr('data-resource-id');
  alert(resourceId);
})
  • 注意,您的原始代码有一个名为
    资源id
    的变量,但连字符在javascript标识符中是非法的。因此,您必须将该变量名改为
    resourceId

  • “??”
    变成了
    “.x[数据资源id]”
    ,所以点击任何与该选择器匹配的内容都会被处理

  • var
    变为
    const
    用于良好测量

  • 修正的标签一致性


获取所有具有您的属性和值的标签:

'tr[data-resource-id="first"]'
'tr[data-resource-id="first"]:first'
仅获取与属性和值匹配的第一个标记:

'tr[data-resource-id="first"]'
'tr[data-resource-id="first"]:first'

获取具有您的属性和值的所有标记:

'tr[data-resource-id="first"]'
'tr[data-resource-id="first"]:first'
仅获取与属性和值匹配的第一个标记:

'tr[data-resource-id="first"]'
'tr[data-resource-id="first"]:first'

可以使用数据属性作为选择器。如下

  $('.x').on('click','tr[data-resource-id="first"]:first',function(){
  var resourceid = $(this).attr('data-resource-id');
    alert(resourceid);
}) 

可以使用数据属性作为选择器。如下

  $('.x').on('click','tr[data-resource-id="first"]:first',function(){
  var resourceid = $(this).attr('data-resource-id');
    alert(resourceid);
}) 

这取决于你想要的具体程度。是否要为页面上的每个
触发此事件?具有属性
数据资源id
的每个元素?每个
中的第一个
?仅当
数据资源id
第一个
时才使用?我们无法在不了解更多信息的情况下为您填写
提供准确答案-这就像一个没有说明的疯狂库。旁注:不能在javascript变量名中使用破折号。(除非您想使用
[“this notation”]
,但这似乎没有必要。)@TylerRoper-我认为可以安全地假设OP希望对属性为
[数据资源id]
的任何元素的每次单击都由callback@ChaseMoskal我不知道为什么可以这样认为。情况似乎并非如此,这取决于你想表现得有多具体。是否要为页面上的每个
触发此事件?具有属性
数据资源id
的每个元素?每个
中的第一个
?仅当
数据资源id
第一个
时才使用?我们无法在不了解更多信息的情况下为您填写
提供准确答案-这就像一个没有说明的疯狂库。旁注:不能在javascript变量名中使用破折号。(除非您想使用
[“this notation”]
,但这似乎没有必要。)@TylerRoper-我认为可以安全地假设OP希望对属性为
[数据资源id]
的任何元素的每次单击都由callback@ChaseMoskal我不知道为什么可以这样认为。看来情况并非如此,谢谢你。但是,我有不止一个这样的属性。我只需要在单击时显示内部警报。我尝试了$('.x')。在('click','[dataresourceid]'上,函数(){但没有work@Galang:这将是
$(文档)。在('click','.x[data resource id]')上,…Rest是相同的
。这是这里的基本选择器用法。谢谢。但是,我有不止一个具有该属性。单击时我只需要显示内部警报。我尝试$('.x')。在('click','[data resource id]',function(){但没有work@Galang:这将是
$(文档)。在('click'、'.x[data resource id]')上,…其余部分与
相同。这是选择器的基本用法。