jQuery获取第二个类并删除一个类

时间:2012-01-27 16:07:48

标签: jquery

那里,

我的帖子按年份排序。默认情况下,它们都是隐藏的(它们获取隐藏元素的.js类)。所以现在它看起来像这样:

<div class="press-wrapper">
 <div class="post-entry post-2011 js">...</div>
 <div class="post-entry post-2011 js">...</div>
 <div class="post-entry post-2010 js">...</div>
 <div class="post-entry post-2010 js">...</div>
 <div class="post-entry post-2009 js">...</div>
 <div class="post-entry post-2009 js">...</div>
 <div class="post-entry post-2008 js">...</div>
</div>

我希望documentReady加载所有具有最新日期的项目,因此它应该如下所示:

<div class="press-wrapper">
 <div class="post-entry post-2011">...</div>
 <div class="post-entry post-2011">...</div>
 <div class="post-entry post-2010 js">...</div>
 <div class="post-entry post-2010 js">...</div>
 <div class="post-entry post-2009 js">...</div>
 <div class="post-entry post-2009 js">...</div>
 <div class="post-entry post-2008 js">...</div>
</div>

所以我有一个获得第一个帖子类的函数:

var pressClass = $('.press-wrapper div:first').attr('class').split(' ')[1];

当我现在尝试删除“.js”时,没有任何事情发生:

$(pressClass).removeClass('js');

我做错了什么?

7 个答案:

答案 0 :(得分:2)

谢谢大家,

最后我提出了:

var pressClass = $('.press-wrapper div:first').attr('class').split(' ')[1];
$("." + pressClass).removeClass('js');

真的很简单。我想要的是获得最新的邮政年度(自动排在最前面),而不仅仅是获得同年的所有其他参赛作品。

那很有效!!!

感谢名单

答案 1 :(得分:1)

您错过了表示课程

的点
$("." + pressClass).removeClass('js');

但我不知道你是否每次都能依赖正确的班级名称!

我建议根据年份需要建立基于此类其他内容的字符串:

var year = new Date().getFullYear()
var className = "post-" + year
$("." + className).removeClass('js')

如果你担心这一年不存在,试试这个:

var year = new Date().getFullYear()
for (var i = year; i < year - 10; i--) {
    if ($(".post-" + i).length) break;
}
$(".post-" + i).removeClass('js')

答案 2 :(得分:0)

编辑 - 我想我可能误解了这个问题,但无论如何这里有些东西:

<小时/> 您试图将从第一个表达式获得的字符串作为jQuery对象包装起来,这没有用。

实际上,您应该将“class”属性视为向量;依赖类元素的顺序是非常脆弱的,特别是当你使用像jQuery这样的库时。如果要删除“js”类,请将其删除:

$('.press-wrapper div:first').removeClass('js');

如果你只想在元素有一些其他类时删除它,你可以测试它:

var $firstDiv = $('.press-wrapper div:first');
if ($firstDiv.hasClass('post-2010'))
  $firstDiv.removeClass('js');

或者根据您的需要做任何事情。

答案 3 :(得分:0)

var pressClass = $('.press-wrapper div:first').attr('class').split(' ')[1];将为您提供一个字符串'post-2011 . So you prefix it with .`来创建一个类选择器。试试这个。

$("." + pressClass).removeClass('js');

你不应该依赖类序列。

var pressClass = $('.press-wrapper div:first').attr('class').split(' ');
if(pressClass.lenght > 0){
   $.each(pressClass, function(i, class){
       if(class.indexOf('post-') != -1){
          preseClass = class;
          return false;
       }
   }
}

然后使用pressClass并删除课程

$("." + pressClass).removeClass('js');

答案 4 :(得分:0)

selector 是错误的。

$('.press-wrapper div:first').removeClass('js');

答案 5 :(得分:0)

var pressClass = $('.press-wrapper div:first');
$(pressClass).removeClass('js');

取出您已经知道要移除的内容的attr。只需定义要从中删除的div。

答案 6 :(得分:0)

$('.post-entry:first-child').removeClass('js');

怎么样?