2012-08-30 30 views
0

我有以下问题:为了不同的情况时标记元素我想添加一个类的元素:JQuery:添加类到元素 - 不能使用这个类的选择器?

jQuery('#menu-item-41 a').addClass('newsbox-closed1'); 

后来我想要做一些有趣的工作人员与此类元素被点击时 - 到目前为止,它工作得很好:

jQuery('.newsbox-closed1').click(function(){ 
     jQuery('#newsbox').css('display', 'block'); 
     jQuery(this).css('background-color', '#FF33AB').removeClass('newsbox-closed1').addClass('news-open'); 
}); 

到现在为止一切都刚刚好。元素获得“news-open”类并且新闻框出现。但是,那么下面不工作:

jQuery('.news-open').click(function(){ 
    alert('JUCVJU'); 
    jQuery(this).removeClass('news-open').addClass('newsbox-closed2'); 
    jQuery('#newsbox').css('display', 'none'); 
}); 

理念:当有人在同一链路上点击一遍,NewsBox中应该会消失,链接获得一个新类。这不起作用 - 类“新开”不会被删除,警告框不会显示,什么都不会。 另外下面的工作一半的方式 - 它是在NewsBox中关闭按钮:

jQuery('#close').click(function(){ 
    jQuery('#newsbox').css('display', 'none'); 
    jQuery('.news-open').removeClass('news-offen').addClass('newsbox-closed2') 
}); 

ID为“NewsBox中”元素消失,但第二部分没有任何影响。这个类仍然是这个元素。我没有得到任何错误信息,没有任何...有没有人有一个想法可能会导致这种情况?

最佳, 托比亚斯

+0

把它放在jsFiddle中会有很大帮助 –

回答

1

你在运行时添加类。更改

jQuery('.news-open').click(function(){ 

jQuery('.news-open').on('click',(function(){ 

以上是jQuery的> = 1.7

的jQuery < 1.7,使用

jQuery('.news-open').live('click',function(){ 

直播和在JQuery的工作,在创建元素也是运行时。

1

你可能需要委派事件处理程序,因为你的文档加载后更改类。试着用

jQuery(document).on('click', '.news-open', function(){ 

更换

jQuery('.news-open').click(function(){ 

如果你能做出比document更具体的,但是,你应该。将您的活动委托给最接近的容器.news-open,以达到最佳效率。

http://api.jquery.com/on/

0

谢谢你们!

要拿点为其他人面临同样的问题我工作的代码看起来如下:

jQuery('#menu-item-41').on('click', '.news-open', (function(){ 
    alert('JUCVJU'); 
    jQuery(this).removeClass('news-open').addClass('newsbox-closed2'); 
    jQuery('#newsbox').css('display', 'none'); 
})); 

ID为“菜单项-41”是围绕着我的元素与容器的id一流的“新闻开放”。现在,当我再次点击进一步重新分类的元素并且新闻箱消失时,我会看到警告框。

0

非常类似的问题:在点击一个链接时,我做了一个动画来显示一个隐藏的div,并将'.hideMe'类添加到布局的其余部分,以便在显示的div上点击任意位置将会再次隐藏它。 jQuery不能选择'.hideMe',因为它在页面加载时不存在。由两个.on()方法与代表团串联起来解决,如下所示:https://stackoverflow.com/a/8261148

$(document.body).on('click', '#link', function() { 
    $('div').addClass('.hideMe').animate(); // animation code here 
    $('#newdiv').show(); 
}).on('click', '.hideme', function() { 
    $('div').removeClass('.hideMe').animate(); // animation code here 
    $('#newdiv').hide(); 
}); 

这是jQuery的1.10.x.

相关问题