判断当前元素是否有某个class,有就不添加,没有就添加当前class
我看你打了jQuery
标签,直接用jQuery
好了,至于判断的事情jQuery
已经帮你做了,自己再判断一次没有任何意义:
jQueryObject.addClass('classname');
if($('body').hasClass('classname')){
$('body').removeClass('classname')
}else{
$('body').addClass('classname')
}
有classname就移除,没有就添加一个classname
HTML5新增的APIclassList
方法中有contains()判断,以及add()和remove()方法添加和删除类。toggle()
方法则是有则删除无则添加, 如果单纯实现该功能应该是不用jQuery的。
可看张鑫旭这篇博客:HTML5 DOM元素类名相关操作API classList简介
$("button").click(function(){
if(!$("p:first").hasClass("intro")){
$("p:first").addClass("intro")
}
});
如果是javascript的话,
if (!p.classList.contains('classname')) {
p.className += ' ' + 'classname';
}
更新
p.classList.add('classname');
p.classList能够列出所有class,add方法新增一个类,存在则忽略,不存在则添加。
结合上面总结了一下,我想出来的只有这几种:
function addClass0(targetEle, filterClassName){
var target = document.getElementById(targetEle);
var isExist = target && target.className.split('').indexOf(filterClassName)!=-1;
if(!isExist){
target.className = target.className + ' ' + filterClassName;
}
}
function addClass(targetEle, filterClassName){
var target = document.getElementById(targetEle);
if(!target.classList.contains('add')){
target.classList.add('add');
}
}
function addClass1(targetEle, filterClassName){
if(!$(targetEle).is('.'+filterClassName)){
$(targetEle).addClass(filterClassName);
}
}
function addClass2(targetEle, filterClassName){
if(!$(targetEle).hasClass(filterClassName)){
$(targetEle).addClass(filterClassName);
}
}
function addClass3(targetEle, filterClassName){
$(targetEle).not('.'+filterClassName).addClass(filterClassName);
}
function addClass4(targetEle, filterClassName){
$(targetEle+':not(.'+filterClassName+')').addClass(filterClassName);
}
function addClass5(targetEle, filterClassName){
$(targetEle).toggleClass(filterClassName);
}
网友们的分享挺好的,我再补充一个给JQuery扩充exist()方法。
在页面<script>部分复制如下代码即可。
//扩展jQuery方法用于检测DOM节点是否存在
(function ($) {
$.fn.exist = function () {
return $(this).length >=1?true:false;
}
})(jQuery);
使用方法:$("#id .class").exist();
这个方法可以检测div或class都行。
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.1k 阅读