获取拆分为字符串数组的对象的“类”属性
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 将查询字符串数组拆分为具有键值的对象的函数
(4.3)数组对象及类数组对象,set的用法,正则表达式的常用方法,蓝桥杯备赛-(生成数组数组去重实现模板字符串的解析新课上线啦)