使用jquery选择当前类
假设我有以下html:使用jquery选择当前类,jquery,Jquery,假设我有以下html: <div class="nav-1 anotherClass">menu one</div> <div class="someClass nav-2">menu two</div> 它得到第一个div的nav-1和第二个div的someClass 我怎样才能得到以nav开头的课程 我试过了,但没有成功: var nav = $('[class^=nav]').attr('class').split(' ')[this];
<div class="nav-1 anotherClass">menu one</div>
<div class="someClass nav-2">menu two</div>
它得到第一个div的nav-1和第二个div的someClass
我怎样才能得到以nav开头的课程
我试过了,但没有成功:
var nav = $('[class^=nav]').attr('class').split(' ')[this];
有简单的吗?试试看
var nav = $('[class|=nav]').attr('class').match(/(nav-[^\s]+)/)[0];
或
不,不幸的是,没有简单的方法可以上某一门课。您必须遍历所有类:
var navList = $('[class*=nav]').attr('class').split(' ');
var nav;
for(var i in navList) {
if(navList[i].indexOf('nav') === 0) { nav = navList[i]; break; }
}
这就是为什么经常使用自定义html属性的原因,例如
<div class="nav anotherClass" data-custom-value=1>menu one</div>
<div class="someClass nav" data-custom-value=2>menu two</div>
我们更喜欢使用另一个类来实现这一点。。。class=“nav nav-1”它更易于使用。您为什么需要它?你不能使用一个普通的类,并使用第二个类或
数据属性来识别每个类吗?然而,它得到了两倍于nav-1,nav-1@NavinRauniyar是var nav=$('[class |=nav]').attr('class').match(/(nav-[^\s]+)/)[0]
为什么它在没有[0]的情况下得到两次?因为.match()
返回一个数组how,我能用第一种方法吗?试着给我一个例子来警告第一个div的nav-1和第二个div的nav-2。@NavinRauniyar也注意到了这一点:使用[class |=nav]
或[class^=nav]
只匹配第一个元素(其中nav-1
是第一个类)。使用*=
将两者匹配。
var navList = $('[class*=nav]').attr('class').split(' ');
var nav;
for(var i in navList) {
if(navList[i].indexOf('nav') === 0) { nav = navList[i]; break; }
}
<div class="nav anotherClass" data-custom-value=1>menu one</div>
<div class="someClass nav" data-custom-value=2>menu two</div>
var navNumber = $('.nav').attr('data-custom-value');