2012-08-30 33 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.

相關問題