jquery获取指定了几个类的元素的特定类名
jquery get certain class name of element which has several classes assigned
我需要读取元素类名。我有这样的元素:
<article class="active clrone moreclass">Article x</article>
<article class="active clrtwo moreclass">Article y</article>
<article class="active clrthree moreclass moreclass">Article z</article>
<article class="active clrone moreclass">Article xyza</article>
我需要解析出以clr
开头的类名。所以,若第二个元素被点击,那个么我需要得到clrtwo
className。
您可以在单击项目的类名上使用正则表达式匹配来查找以"clr"开头的类,如下所示:
$("article").click(function() {
var matches = this.className.match(/'bclr[^'s]+'b/);
if (matches) {
// matches[0] is clrone or clrtwo, etc...
}
});
以下是您的解决方案:
$('article').click(function () {
var className = this.className.split(' ');
for (var i = 0; i < className.length; i+=1) {
if (className[i].indexOf('clr') >= 0) {
alert(className[i]);
}
}
});
http://jsfiddle.net/vJfT7/
你将如何订购不同的课程是不重要的。该代码只会提醒您类名中有"clr"作为子字符串。
致以最良好的问候。
如果不需要基于这些类查找元素(例如执行$('.clrtwo')
),最好将数据存储为data-clr
属性。这符合HTML5的标准,并由使用.data()
函数的jQuery支持。
在这种情况下,我会以这种方式修改您的HTML:
<article class="active moreclass" data-clr="one">Article x</article>
<article class="active moreclass" data-clr="two">Article y</article>
<article class="active moreclass moreclass" data-clr="three">Article z</article>
<article class="active moreclass" data-clr="one">Article xyza</article>
然后我会使用这样的Javascript:
$('article.active').click(function() {
console.log($(this).data('clr'));
});
jsFiddle示例
如果它总是感兴趣的第二个类名,您可以这样做:
$("article").click(function () {
// split on the space and output the second element
// in the resulting array
console.log($(this)[0].className.split(" ")[1]);
});
http://jsfiddle.net/karim79/Z3qhW/
<script type="text/javascript">
jQuery(document).ready(function(){
$("article").click(function(){
alert($(this).attr('class').match(/'bclr[^'s]+'b/)[0]);
});
});
</script>
这个jquery脚本应该按照您的要求执行(在jsfiddle上测试):
$(document).ready(function () {
function getClrClass(elem) {
var classes = elem.getAttribute('class').split(' ');
var i = 0;
var cssClass = '';
for (i = 0; i < classes.length; i += 1) {
if (classes[i].indexOf('clr') === 0) {
cssClass = classes[i];
i = classes.length; //exit for loop
}
}
return cssClass;
};
$('article').click(function (e) {
var cssClass = getClrClass($(this)[0]);
alert(cssClass);
e.preventDefault();
return false;
});
});
希望这能有所帮助。
Pete
使用属性选择器来获取那些具有包含clr
的类名的属性。
从那里:
- 提取类名(字符串函数)
- 分析位置
- 确定下一个元素
如果您只有几个类,那么后两者可能最好由翻译数组提供。
更新
我同意loneomeday,您最好使用data-*属性来处理这样的逻辑。使用CSS作为JavaScript挂钩已经成为过去。
http://jsfiddle.net/4KwWn/
$('article[class*=clr]').click(function() {
var token = $(this).attr('class'),
position = token.indexOf('clr');
token = token.substring(position, token.indexOf(' ', position));
alert(token);
});
相关文章:
- 在几个元素上模拟onclick事件
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- 如何在其他几个元素中选择锚点
- 缩短几个元素的onclick代码 - JavaScript
- “功能上”生成一个仅包含几个元素的列表
- 使用 jquery 为每几个随机元素添加类
- 使用用户输入值从 DOM 中删除几个元素
- 几个元素上的一个事件
- 获取存储在几个HTML元素中的数据
- html5视频元素有任何错误?它不会在几个小时后继续播放内容
- 如何检查几个元素中是否存在一个
- 选择所有DOM元素,直到出现几个DOM元素中的一个为止
- 将几个jqueryui元素相互绑定
- 敲除:绑定到同一可观察对象的几个 DOM 元素
- jquery获取指定了几个类的元素的特定类名
- 使用setTimeout在X秒后隐藏几个元素
- 从DIV JavaScript中的几个元素更改ID和NAME
- Wordpress将鼠标悬停在链接上,几个元素发生了变化
- 使用javascript从位置检测几个元素
- 操纵几个元素的Angular JS指令