Javascript 在HTML文档中查找与模式匹配的所有类?
我今天开始思考:获得文档中使用的(最好)匹配模式(正则表达式)模式或(或者)以特定字符序列开始的类的不同(即无重复)列表的最佳方法是什么?JQuery可以用于此目的,也可以仅用于直接的Javascript 现在,它显然应该满足所有法律类用途,例如:Javascript 在HTML文档中查找与模式匹配的所有类?,javascript,jquery,html,css,jquery-1.3,Javascript,Jquery,Html,Css,Jquery 1.3,我今天开始思考:获得文档中使用的(最好)匹配模式(正则表达式)模式或(或者)以特定字符序列开始的类的不同(即无重复)列表的最佳方法是什么?JQuery可以用于此目的,也可以仅用于直接的Javascript 现在,它显然应该满足所有法律类用途,例如: <div class="class1 class2 class3"> </div> 我不想用正则表达式解析文档。这太容易出错了。我感兴趣的是一个Jaavascript解决方案,它可以遍历DOM或使用类似于jQuery的东
<div class="class1 class2 class3">
</div>
我不想用正则表达式解析文档。这太容易出错了。我感兴趣的是一个Jaavascript解决方案,它可以遍历DOM或使用类似于jQuery的东西来实现这一点
哦,这还应该包括通过以前的Javascript代码动态添加/删除的任何类
建议?这对你有帮助吗
$(“输入[class*='star\u id\u 45']”)
函数类(){
var tags=document.getElementsByTagName('*');
var cls,clct={},i,j,l=tags.length;
对于(i=0;i
这是一个与regexp匹配的版本
function gatherClasses( matchString ) {
if( matchString ) {
var rxp = new RegExp( matchString );
} else {
var rxp = /.*/;
}
var tags = document.getElementsByTagName('*');
var cls, clct = {}, i, j, l = tags.length;
for( i = 0; i < l; i++ ) {
cls = tags[i].className.split(' ');
for( j = 0; j < cls.length; j++ ) {
if( !cls[j] || !rxp.test( cls[j] ) ) {
continue;
}
clct[cls[j]] = 'dummy'; //so we only get a class once
}
}
cls = [];
for( i in clct ) {
cls.push( i );
}
return cls;
}
//find classes that match 'stack'
alert(gatherClasses('stack'))
函数类(匹配字符串){
if(匹配字符串){
var rxp=新的RegExp(匹配字符串);
}否则{
var rxp=/.*/;
}
var tags=document.getElementsByTagName('*');
var cls,clct={},i,j,l=tags.length;
对于(i=0;i
使用jQuery:
var listClasses = function( pattern ){
var allClassesTmp = {}, allClasses = [];
var rx = pattern ? (new RegExp(pattern)) : (new RegExp(".*"));
$('*[class]').each( function(){
var cn = this.className.split(/\s+/);
for(var i=cn.length;--i>-1;){
if(rx.test(cn[i]))allClassesTmp[ cn[i] ] = 1
}
});
for(var i in allClassesTmp)allClasses.push(i);
return allClasses;
}
某种程度上。我不知道您可以使用class属性进行通配符匹配(在href中看到),但我想没有理由不这样做。只是我没有想到。但我真正想要的是不同的类名,而不是一组包装好的元素。这也可以,但另一种解决方案更简洁(好东西)和更健壮(例如在\s+上拆分,而不是在“”上拆分)。
function gatherClasses( matchString ) {
if( matchString ) {
var rxp = new RegExp( matchString );
} else {
var rxp = /.*/;
}
var tags = document.getElementsByTagName('*');
var cls, clct = {}, i, j, l = tags.length;
for( i = 0; i < l; i++ ) {
cls = tags[i].className.split(' ');
for( j = 0; j < cls.length; j++ ) {
if( !cls[j] || !rxp.test( cls[j] ) ) {
continue;
}
clct[cls[j]] = 'dummy'; //so we only get a class once
}
}
cls = [];
for( i in clct ) {
cls.push( i );
}
return cls;
}
//find classes that match 'stack'
alert(gatherClasses('stack'))
var listClasses = function( pattern ){
var allClassesTmp = {}, allClasses = [];
var rx = pattern ? (new RegExp(pattern)) : (new RegExp(".*"));
$('*[class]').each( function(){
var cn = this.className.split(/\s+/);
for(var i=cn.length;--i>-1;){
if(rx.test(cn[i]))allClassesTmp[ cn[i] ] = 1
}
});
for(var i in allClassesTmp)allClasses.push(i);
return allClasses;
}