2013-05-26 119 views
0

我想删除以前的JQuery事件添加的类,但它不会玩球。请指导我!添加和删除类问题JQuery

这是应用类:

$('.project').click(function() { 
     var imageTotal = $(this).find('.gallery img').length; 
     if (imageTotal === 1) { 
      $('.next-image', this).hide(); 
      $('.prev-image', this).hide(); 
     } else { 
      $('.next-image', this).show(); 
      $('.prev-image', this).show(); 
     } 
     $('img.feature').hide(); 
     $('.gallery img:nth-of-type(' + imageCounter + ')', this).addClass('current'); 
     $(this).addClass('active'); 
    }); 

而这正是我试图用其删除:

$('.back').click(function() { 
     $('.gallery').hide(); 
     $('.back').hide(); 
     $('img.feature').show(); 
     $(this).parent('.project').find('div').removeClass('active'); 
     $('.prev-page').show(); 
    }); 

这是HTML结构:

<div class="project"> 
       <img class="feature" src="content/dream1.jpg"/> 
       <div class="description"> 
        <h3>Exhibition Roadshow</h3> 
        <h4>The Royal Borough of Kensington and Chelsea 2012</h4> 
       </div> 
       <div class="gallery"> 
        <img src="content/dream2.jpg"/> 
        <img src="content/dream3.jpg"/> 
        <img src="content/dream4.jpg"/> 
        <img src="content/dream5.jpg"/> 
        <div class="next-image">&rarr;</div> 
        <div class="prev-image">&larr;</div> 
       </div> 
       <div class="back">S</div> 
      </div> 

你可以看到活的例子here,如果有帮助...

+1

哪里是'imageCounter'界定? – hexblot

+0

@hexblot - 请看看实时链接。通过复制和粘贴来解释比我更容易。谢谢。 – JohnRobertPett

回答

0

你的第一个问题是: $(this).parent('。project')。 find('div') .removeClass('active');

但真正的问题是,班级会被删除,但是您无法终止catch事件,因此它会在您再次设置相同班级的点击事件中触发.project。这一切都发生在同一时间,所以它似乎永远不会被删除。

解决方案?在单击事件结束时添加return false;

+0

btw:如果我不知道那里有更多的内容,我不会看到底栏。 – MarZab

+0

刚刚尝试过。似乎也没有工作。真的很困惑,因为我使用相同的方法来删除相同的方法,使用'$('img')。removeClass('current');'...' – JohnRobertPett

+0

删除'当前'类有趣的如何2其他人有同样的答案在我后,但他们得到upvote:P只是另一个bug:如果我选择文本然后拖下来,我打破分页,甚至刷新页面不会修复它 – MarZab

1

您正在从错误的元素中删除该类。 这条线:

$(this).parent('.project').find('div').removeClass('active'); 

应该是这样的:

$(this).closest('.project').removeClass('active'); 

由于。项目是你要删除的活动类的元素。你在做的是在.project元素内搜索“div”。

0

$('.project').click(function() {方法$(this).addClass('active');增加了主动,以$('.project') ...

,你正试图从$('.project')孩子的删除... 你需要的是

$('.back').click(function() { 
     $('.gallery').hide(); 
     $('.back').hide(); 
     $('img.feature').show(); 
     $(this).parent('.project').removeClass('active'); 
     $('.prev-page').show(); 
    }); 
+0

我已将此添加到实时版本,而且我仍然遇到同样的问题,请在此处查看:http://yaocho-digital.com/艾拉/ – JohnRobertPett