提问人:Banshee 提问时间:3/6/2011 最后编辑:double-beepBanshee 更新时间:12/26/2020 访问量:151493
如何使用jQuery更改元素的类>
How can I change the class of an element with jQuery>
问:
我有一个 JavaScript 函数,如下所示:
function UpdateFilterView() {
if (_extraFilterExists) {
if ($('#F_ShowF').val() == 1) {
$('#extraFilterDropDownButton').attr('class', "showhideExtra_up");
$('#extraFilterDropDownButton').css("display", "block");
if ($('#divCategoryFilter').css("display") == 'none') {
$('#divCategoryFilter').show('slow');
}
return;
} else {
if ($('#divCategoryFilter').css("display") == 'block') {
$('#divCategoryFilter').hide('slow');
}
$('#extraFilterDropDownButton').css("display", "block");
$('#extraFilterDropDownButton').attr('class', "showhideExtra_down");
return;
}
} else {
if ($('#divCategoryFilter').css("display") != 'none') {
$('#divCategoryFilter').hide('fast');
}
$('#extraFilterDropDownButton').css("display", "none");
}
}
这将由以下代码触发(从 :$(document).ready(function () {})
$('#extraFilterDropDownButton').click(function() {
if ($('#F_ShowF').val() == 1) {
$('#F_ShowF').val(0);
} else {
$('#F_ShowF').val(1);
}
UpdateFilterView();
});
这个 HTML 很简单:
<div id="divCategoryFilter">...</div>
<div style="clear:both;"></div>
<div id="extraFilterDropDownButton" class="showhideExtra_down"> </div>
我有两个问题:
当面板被隐藏并按下 div 按钮 () 时,页面的左上角将闪烁,然后面板将向下动画化。
extraFilterDropDownButton
当面板显示时,我们按下 div 按钮,面板将 ,但即使我们在脚本中设置它,该按钮也不会更改为正确的类?
hide('slow')
UpdateFilterView
将鼠标悬停时,将在按钮上设置正确的类,这是使用以下代码设置的:
$("#extraFilterDropDownButton").hover(function() {
if ($('#divCategoryFilter').css("display") == 'block') {
$(this).attr('class', 'showhideExtra_up_hover');
} else {
$(this).attr('class', 'showhideExtra_down_hover');
}
},
function() {
if ($('#divCategoryFilter').css("display") == 'block') {
$(this).attr('class', 'showhideExtra_up');
} else {
$(this).attr('class', 'showhideExtra_down');
}
});
答:
18赞
Seth
3/6/2011
#1
使用 jQuery 的
$(this).addClass('showhideExtra_up_hover');
和
$(this).addClass('showhideExtra_down_hover');
214赞
patrick
4/3/2012
#2
要完全设置一个类,而不是添加或删除一个类,请使用以下命令:
$(this).attr("class","newclass");
这样做的好处是,您将删除可能在那里设置的任何类,并将其重置为您喜欢的方式。至少在一种情况下这对我有用。
评论
0赞
T J
10/2/2014
好的,但是OP也在使用,那么这应该如何解决这个问题..?.attr('class', "showhideExtra_down")
0赞
Falke Design
1/17/2019
答案是正确的! .attr('class', “className”) 是正确的。
9赞
nextzeus
8/4/2014
#3
<script>
$(document).ready(function(){
$('button').attr('class','btn btn-primary');
}); </script>
评论
4赞
Reporter
8/4/2014
我认为当您为您的意图添加一些解释时,这对 OP 和进一步的访问者会更有帮助。
0赞
Catto
6/7/2017
此代码示例有助于清楚地了解如何通过使用 2 个或更多类之间的空格来添加它们。
6赞
plgrenier
7/12/2016
#4
我喜欢写一个小插件来让事情更干净:
$.fn.setClass = function(classes) {
this.attr('class', classes);
return this;
};
这样你就可以简单地做
$('button').setClass('btn btn-primary');
评论