jQuery可以获取某些类,但不能获取其他类
jQuery get certain classes but not others
我有一个div,看起来像
<div class="draggable resizable abc table shadow"></div>
类没有特定的顺序。如果我做了$('div').attr('class')
,那么我得到了该div的所有类的列表。我想要的是只得到不是resizable
, draggable
或table
的类。在这种情况下,我想要abc shadow
。
var all = "draggable resizable abc table shadow";
var some = all.replace(/(?:^|'s)(resizable|draggable|table)(?='s|$)/g, '');
console.log(some);
// " abc shadow"
console.log(some.replace(/^'s+|'s+$/g,''));
// "abc shadow"
console.log(some.split(/'s+/));
// ["", "abc", "shadow"]
请注意,如果您只想要一个适合将className
设置为。
replace
(您不需要去掉前导和尾随空格)。但是,如果您只是想从元素中删除一组已知的类,那么最好直接:
$(...).removeClass("draggable resizable table");
可选(不需要正则表达式):
var ignore = {resizable:1, draggable:1, table:1};
var all = "draggable resizable abc table shadow".split(' ');
for (var subset=[],i=all.length;i--;) if (!ignore[all[i]]) subset.push(all[i]);
console.log(subset);
// ["shadow","abc"]
console.log(subset.join(' '));
// "shadow abc"
插件:
(function($) {
$.fn.getClasses = function(exclude) {
var remove = {};
for(var i = exclude.length; i--;) {
remove[exclude[i]] = true;
}
return $.map(this.attr('class').split(/'s+/g), function(cls) {
return remove[cls] ? null : cls;
});
};
}(jQuery));
用法:
var classes = $('div').getClasses(['resizable', 'draggable', 'table']);
@Phrogz的回答很好。显然,他是个正则表达式天才。由于我不太了解正则表达式,以下是我对它的理解:
var aryClasses = $("div").attr("class").split(" ");
var aryDesiredClasses = new Array();
for(var i = 0; i < aryClasses.length; i++) {
if(aryClasses[i] != "table"
&& aryClasses[i] != "resizable"
&& aryClasses[i] != "draggable")
aryDesiredClasses.push(aryClasses[i]);
}
alert(aryDesiredClasses.join(" "));
function getDesiredClass( removedClassArr ){
var classArray = $("selector").attr('class').split(" ");
var desiredClassArray = [];
for(var i = 0; i < classArray.length; i++ ){
if ( !isUnDesiredClass(removedClassArr, classArray[i]) ){
desiredClassArray .push( classArray[i] );
}
}
return desiredClassArray;
}
function isUnDesiredClass( removedClassArr , cls){
for(var i = 0; i < removedClassArr.length; i++ ){
if( removedClassArr[i] == cls ){
return true;
}
}
return false;
}
您可以使用.hasClass
检查单个类。
$("div").hasClass("class");
这里有答案。使用jQuery获取元素的类列表
你可以扩展它来获取数组中非"可调整大小,可拖拽或表格"的字符串
var classes = $('div').not('.resizable, .draggable, .table').attr('class').split(' ');
看看这个jsFiddle,我有一些工作像你想要的。
还有,看看jQuery:not selectors
相关文章:
- JS可以在Chrome中工作,但不能在Firefox中工作
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- 三角库可以与firefox一起使用,但不能在Chrome中使用
- Highcharts可以从服务器加载数据,但不能更新
- 刷新GoogleMaps tile服务器可以使用JavaScript,但不能使用GWT
- node.js可以识别字符模式,但不能识别数字模式
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- Json到CSV下载,可以在chrome中工作,但不能在IE浏览器中工作
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- 能够获取元素长度,但不能获取内部 HTML
- 可以获取模板实例值,但不能将其用于其他函数
- “无法获取未定义或空引用的属性'getData'”在IE中,但不能在Chrome中获取
- 可以从单击的类中获取id,但不能从单击的id中获取类
- Ajax调用Php脚本以获取base64字符串中的图像,该字符串可在本地主机上工作,但不能从托管服务器中获取
- 类已经或正在使用名称'SafeUrl'从外部模块获取,但不能命名
- jQuery可以获取某些类,但不能获取其他类
- 美元http.get获取反序列化JSON,但不能将其赋值给array
- 可以获取相册封面,但不能获取相册中的照片(facebookapi)
- 电话间隙:获取联系人姓名,但不能获取号码