使用 bootstrap 设置元素的 class 后,如何修改该元素的 class?

我设置了一个元素的 class ,现在想通过 JavaScript 更改该元素的 class ,我试过 jQuery 的 attr 修改 class 属性不行。
html:

<nav>
    <ul class="pager" id="pageCtr">
        <li class="previous" id="prevBTN">
            <a href="#" onclick="prevPage()"><span>&larr;</span>前一页</a>
        </li>
    </ul>
</nav>

js:

$('#prevBTN').className='previous disabled';
阅读 11.3k
6 个回答

感谢 @daryl@Tony_Zby 的热心解答,我自己也想用吧 <li> 标签里面的 <a> 换成 <button> ,能实现禁用按钮效果,但是 .pager 的 BootStrap 默认样式会变化;
<li class="previous" id='prevBTN'> 换成 <li class="previous disabled" id='prevBTN'> 使用 document.getElementById('prevBTN').className='previous disabled'; 确实可行,但使用 jQuery 时会出现问题,$('#prevBTN').className='previous disabled'; 就不能实现,主要原因是 $('#prevBTN') 并不能得到 DOM 元素,而 className 是 DOM 里面的属性,$(selector) 只能得到满足选择器条件 DOM 元素集合,

jQuery() (or $()) with an id selector as its argument will return a jQuery object containing a collection of either zero or one DOM element.

解决方法:$('#prevBTN').get(0).className='previous disabled';

假设元素

<div class="className" id="idValue"></div>

可以这样改

var e = document.getElementById('idValue')
if (e) {
    e.className = "changedClassName"
}

屡试不爽。

jQuery把document.getElementById('idValue')改成$('#idValue')就好啦

HTML:

<div id="id_test" class="old-bootstrap">

JS:

$('#id_test').className='new_class';

不是通过attr,而是通过className

PS:
如果你想为li添加属性disabled可以这样做,不是添加class而是attr
$('#prevBTN').attr('disabled', true);

去除attr:

方案1:a标签不支持disabled属性,所以你把a标签换成button标签就可以了:http://www.w3school.com.cn/ti...
方案2:用a标签也可以,去除它的href属性就可以实现不能点击的效果,即$('#prevBTN').removeAttr('href');
参考:你把下面这段代码拿到这个上面运行

<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js"></script>
<script>
function test() {
    $('#id_test').removeAttr('href');
}

</script>
</head>

<body>
<nav>
    <ul class="pager" id="pageCtr">
        <li class="previous" id="prevBTN">
            <a href="#" id="id_test" onclick="prevPage()"><span>&larr;</span>前一页</a>
        </li>
    </ul>
</nav>
<button id="id_test2" onClick="test()">disable</button>
</body>
</html>

楼主的代码是怎样的?
为什么我这里直接用attr()来设置class是可以的呢?

另外,jQuery还有addClass()和removeClass这两个方法,操作class 我一般用这两种方法。

jQuery有专门操作class的方法,可以查下相关API

jQuery的addclass()正解,然后bootstrap里面有些类,除非你用行间样式才能破解。最好是确定你项目需要什么类型的类后,定制bootstrap。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题