javascript - 如何在 jQuery 中使用数据属性值作为 ID 选择器?

标签 javascript jquery html

我需要通过数据属性将 ID 用作选择器,但我无法让它工作。

基本上,我在最顶部有一组链接。每个链接都有一个唯一的 ID。我使用这些链接即时创建链接。即时创建的链接有一个数据属性集,其中包含我之前单击的链接的 ID。现在,我需要使用我最初单击的链接的 Id 将此链接定位到数据属性,并显示内部文本。

如何将(动态创建的元素的)数据属性设置为 ID 选择器?

这是以下 Javascript 代码。

$('.group-1 a').on('click', function(){

  var block = 
 '<div class="group-2">' +
     '<a href="#" class="child-item" data-item="'+ $(this).attr('id') +'" >Child Item 100</a>' +
  '</div>'; 


$(block).appendTo( $('.host'));


});

$('body').on('click', '.child-item', function(){

      var getId = $(this).attr('data-item');

      var getInner = $('[id="#' + getid + '"]').text();

      $('.result').text(getInner);

})

HTML代码:

 <div class="group-1">
   <a href="#" id="item-1">Parent Item 100</a>
   <a href="#" id="item-2">Parent Item 200</a>
   <a href="#" id="item-3">Parent Item 300</a>
 </div>

 <hr>

 <div class="host"></div>

 <div class="result"></div>

我已经在 JSFiddle 准备了一个实时 View

最佳答案

你要的选择器不是'[id="#myId"]',而是'[id="myId"]'(没有#):

$('[id="' + getId + '"]')

或者,因为您不使用像 : 这样的特殊字符:

$('#' + getId)

Fixed JSFiddle here (请注意,您还有 getid,我将其更改为 getId)。

现在,注意在这两种情况下有两个不同的选择器:第二个是 ID selector。 , 第一个是 attribute equals selector (这恰好是在比较 id 属性)。

ID 之间的重要区别和 Attribute-Equals选择器:

1) 具有重复 ID 的元素

当存在具有重复 ID 的元素(这是无效的 HTML,但仍然可以存在)时:#foo 选择器 获取DOM 中的第一个 匹配元素(带有foo id); [id='foo'] 选择器获取所有这些。

2) 转义

在ID选择器中,id是一个CSS标识符,所以它必须符合CSS转义规则。 在属性选择器中,属性值是一个字符串。

例如,假设您的 ID 中有一个 ":":

$("#foo:bar"); // INVALID! :bar is intepreted as a (invalid) pseudo-class

$("#foo\\:bar"); // Valid! The : is properly escaped
$("[id='foo:bar']"); // Valid! The : is inside a string

关于javascript - 如何在 jQuery 中使用数据属性值作为 ID 选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47117701/

相关文章:

javascript - 动态创建的 SVG 呈现为 HTML 但未正确显示

jquery - 嵌套下拉菜单 css jquery

javascript - 为什么 JSON.stringify 不显示作为函数的对象属性?

更多 JavaScript 的 JavaScript 预加载器

jquery - Bootstrap 的数据表下拉菜单不起作用

jquery - CSS3 转换 : sending input to a transformed div

html - 改变 li :hover background color with Bootstrap

html - 如何通过css和html创建一个连续三列的列表?

html - 为什么我的 Bootstrap Toggle Navbar 消失了?

javascript - 类型错误 : 'undefined' is not a constructor - Backbone Model