获取拆分为字符串数组的对象的“类”属性

Posted

技术标签:

【中文标题】获取拆分为字符串数组的对象的“类”属性【英文标题】:Get the "class" attribute of an object split into an array of strings 【发布时间】:2012-12-18 20:06:57 【问题描述】:

序言:我是意大利人,抱歉我的英语不好。

所以这是个问题:

考虑这样的 html 对象:

<div id="myDiv" class="c1 c2 c3 c4 c5"></div>

如何使用 jquery 从“div”元素的“class”属性中获取字符串数组?

例子:

var a = $('#myDiv').getClassArray(); //Not working,just an example

return a;  //[c1,c2,c3,c4,c5]

本以为可以读取“class”属性然后拆分字符串,但是好像太冗长了,想知道有没有更短更优雅的方法。

【问题讨论】:

你不觉得你错过了# in $('myDiv').getClassArray(); 我认为没有比拆分字符串类更好的方法 如果经常需要,您可以随时制作一个插件来执行此操作。 @ameyarote 我忘记了“#”字符,你是对的,但这只是一个示例代码 【参考方案1】:

您需要 # 来获取 id selector 并使用 split() 从字符串中获取数组。

Live Demo

var a = $('#myDiv').attr('class').split(' ');

您可以使用 for 循环的 jQuery jQuery.each() 遍历数组。

var a = $('#myDiv').attr('class').split(' ');

$.each(a, function(index, item)
    alert(item);
);​

【讨论】:

不应该是$('#myDiv')而不是$('myDiv')吗? 我忘记了 '#' 字符,我知道,你是对的,但这只是一个示例代码 此解决方案不考虑类名之间的多个空格。 $('#myDiv').attr('class').replace(/\s+/g, ' ').split(' '); 会考虑到这一点。 别担心,你可以在一个数组中【参考方案2】:

新标准 classList 属性将允许对 DOM 元素进行如此轻松的访问(例如,通过 jQuery 中的 $('#myDiv')[0].classList),但它并未普遍实现。有关此标准的文档,请参阅 here 或有关当前浏览器支持的 here。

在bug 7378 中曾提议为 jQuery 提供 shim 之类的功能,但被拒绝了。

但是,您可以通过 shim 获得此类支持,例如 https://github.com/eligrey/classList.js

更新:带有 shim 的演示位于 http://jsfiddle.net/brettz9/WWs5B/1/

【讨论】:

这似乎很有趣......不幸的是,考虑到它有错误,我不能使用它,但将来可能会有用,tx! 什么有bug?如果您在谈论 jQuery,那只是一个功能请求(被拒绝),而不是一个错误。我所说的是一个尚未在所有浏览器中都支持的功能,但是如果您为 classList.js shim 添加一个脚本标记,它应该可以让您按照我的描述使用它。 我已经更新了链接到这个演示的答案:jsfiddle.net/brettz9/WWs5B/1【参考方案3】:

你为什么不试试这个:http://jsfiddle.net/egZ2z/

var cls = $('#myDiv').attr('class');
var n = cls.split(' ')
alert(n);

【讨论】:

以上是关于获取拆分为字符串数组的对象的“类”属性的主要内容,如果未能解决你的问题,请参考以下文章

一个类数组对象转换为一个真正的数组

javascript 将查询字符串数组拆分为具有键值的对象的函数

在JS中将对象拆分为对象数组

(4.3)数组对象及类数组对象,set的用法,正则表达式的常用方法,蓝桥杯备赛-(生成数组数组去重实现模板字符串的解析新课上线啦)

Javascript:如何使用字符串数组获取对象属性? [复制]

将字符串拆分为数组错误