javascript - 如何在不同时间使用 jQuery 更改类?

标签 javascript jquery html css

我有一个正在切换的隐藏 div。当它出现时,跨度会更改其类。

$('#websites').click(function(){
   $('#webthumbs').slideToggle('fast');
   $('#websites span').removeClass('icon-chevron-right').addClass('icon-chevron-down');
   $(this).addClass('open');
});

当 div 再次折叠和隐藏时,我需要将 span 的类改回原来的类。我试过这个但它不起作用:

$('#websites.open').click(function(){
   $('#websites span').removeClass('icon-chevron-down').addClass('icon-chevron-right');
   $(this).removeClass('open');
});

我感觉第二段代码不起作用,因为加载脚本时 .open 不在 DOM 中。我怎样才能让第二段代码工作?

最佳答案

你只需要切换类来切换图标

$('#websites').click(function(){
   $('#webthumbs').slideToggle('fast');
   $('#websites span').toggleClass('icon-chevron-right icon-chevron-down');
});

代码不起作用的原因是因为事件处理程序在执行时添加到与选择器匹配的元素,稍后添加类没有区别。

如果你需要切换 jQuery 没有提供内置方法的东西,你可以使用一个标志

$('#websites').click(function(){

    var flag = $(this).data('flag');

    if ( flag ) {
        // do anything when the state is "open"
        $('#webthumbs').slideUp('fast');
    } else {
        // do anything when the state is "closed"
        $('#webthumbs').slideDown('fast');        
    }

    $(this).data('flag', !flag);
});

关于javascript - 如何在不同时间使用 jQuery 更改类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35443561/

相关文章:

javascript 分隔 document.getElementById 以实现可重用性

javascript - 使用当前日期、月份和年份填充下拉列表

javascript - ajax 在前面完成后执行函数

php - 如何使用 PHP Simple HTML DOM Parser 查找所有元素?

php - 如何删除所有换行符并从 PHP 中的字符串中转义字符?

javascript - 如何向 map 上的标记添加删除按钮

javascript - 如果元素存在则条件渲染

javascript - 在 React Native 中从应用程序本身的 web View 重定向到移动应用程序

php - 如何在 jquery 中检索同级内容?

javascript - 如何在nodejs中使用bower包?