我正在尝试将.hasClass
用作 if语句。通过确定被点击元素所属的类,我正在运行几种不同的方法。
如果点击的范围有inactive
类,那么我希望:
inactive
active
definition
课下滑(使用.next
)反之,如果点击的范围有一个active
类,那么:
active
inactive
definition
向上滑动。基本上我正在显示或隐藏某个元素并使用类名添加一些样式。
Full JS Fiddle here:
http://jsfiddle.net/franhaselden/9ms79uhe/3/
我让它工作正常只需使用this
作为活动类,但当我尝试添加.hasClass
时它停止工作。我错误地使用.hasClass
吗?
我在第6行得到错误 undefined不是函数,所以.hasClass
行的开头。
这是jQuery:
$( "#jargon-main span" ).click(function() {
// if class = "active" then:
// remove class active
// add class inactive
// make .next sibling with class .definition slideUp
$(this).hasClass("active").removeClass('active').addClass('inactive').next(".definition").slideUp( "fast", function() {});
// if class = "inactive" then:
// remove class inactive
// add class active
// make .next sibling with class .definition slideDown
$(this).hasClass("inactive").removeClass('inactive').addClass('active').next(".definition").slideDown( "fast", function() {});
});
答案 0 :(得分:1)
顾名思义,jQuery的hasClass
返回一个布尔值,它可以是true或false,具体取决于是否具有类。
如果您只想定位具有特定类的元素,可以将其用作常规选择器,或者使用条件
if ( $(this).hasClass("inactive") ) {
$(this).removeClass('inactive')
.addClass('active')
.next(".definition")
.slideDown( "fast", function() {});
}
还有jQuery的toggleClass
会自动切换课程。
$(this).toggleClass('active inactive').next(".definition").slideToggle("fast");
答案 1 :(得分:1)
是。 $.hasClass
返回一个布尔值(true或false)。所以你需要一个if
条件
if($(this).hasClass("active")){
$(this).removeClass('active').addClass('inactive').next(".definition").slideUp( "fast", function() {});
}
答案 2 :(得分:0)
.hasClass()返回布尔值,因此您无法从.hasClass()的结果调用.removeClass()。
所以工作Js Fiddle将是: http://jsfiddle.net/99qebvjr/1/
$( "#jargon-main span" ).click(function() {
// if class = "active" then:
// remove class active
// add class inactive
// make .next sibling with class .definition slideUp
if($(this).hasClass("active")){
$(this).removeClass('active').addClass('inactive').next(".definition").slideUp( "fast", function() {});
}
// if class = "inactive" then:
// remove class inactive
// add class active
// make .next sibling with class .definition slideDown
else if($(this).hasClass("inactive")){
$(this).removeClass('inactive').addClass('active').next(".definition").slideDown( "fast", function() {});
}
});