jQuery的:从多类元素的类名(jQuery: Get class name from multi

2019-10-30 04:43发布

我选择了以下元素。 什么是获取类名icon_23123的最佳方式?

<div class="icon icon_23123"></div>

有什么样[^类=“icon_”],选择属性,而不是元素? 或者我应该得到所有的类名,并通过对找到一个与icon_开始循环?

编辑:我想编写一个函数,获得任何一类的名字开始icon_,只有那些类名。 最后,我想下划线后的部分,但它不一定numeric-我的计划是使用正则表达式(这些类的命名规则。)

EDIT2:我想从类名的元素已经被选中,我只需要从它的类名(不带班=“图标_.....”文档中的每个元素)

EIDT3:我真正的问题是,我是混合数据和造型。 因为我不关心,支持旧的浏览器,我使用的数据-ID来保存这些数据的ID。

<div class="icon icon_23123" data-id="23123"></div>

Answer 1:

如果您使用类来存储数据,HTML5提供了更便捷的方式将数据附加到一个元素- data-属性 。 例如:

<div class="icon" data-id="23123"></div>

然后你就可以读取属性直接(大多数跨浏览器的方式):

var id = myelement.getAttribute('data-id');

或者使用本地dataset属性对象:

var id = myelement.dataset.id;

或使用jQuery的data()对旧版浏览器的方法(IE10-):

var id = $(myelement).data('id');

另外,也可以使用相同的data-属性经由属性选择单个样式附着到元件等.icon[data-id="23123"]



Answer 2:

使用.attr()与合并。每个():

$('[class^="icon_"]').each(function () { console.log($(this).attr('class'); });

这通过其具有与启动类名的所有元素icon_并把它传递给每个功能。 然后,您可以使用.attr访问元素的属性。 如果你只需要访问的第n个元素,你可以使用$('[class^=icon_]:eq(n)').attr('class')

编辑(回答评论):

var classes = $(selectedElement).attr('class'),
    iconIndex = classes.indexOf('icon_'),
    iconIndex2 = classes.indexOf(' ', iconIndex),
    theClassName = classes.slice(iconIndex, (iconIndex2 > -1) ? iconIndex2 : undefined)

API文档: 每个 ATTR



文章来源: jQuery: Get class name from multiclass element