2013-06-22 4 views
0

Итак, я использую эту функцию ниже, чтобы изменить фон одного элемента за раз. У меня это работает отлично, учитывая, что я получил его отсюда в любом случае, но мне хотелось бы, чтобы при щелчке по второму или третьему ребенку после добавления класса он удалит класс и добавит активный класс обратно в Первый ребенок.jQuery изменение фона одного элемента за раз

$(window).load(function(){ 
    $('.innernav li:first-child a').addClass('back'); 
}); 
$("a").click(function() { 
    $('a').removeClass('back'); 
    $(this).addClass('back'); 
}); 

Проще говоря, я хотел бы, чтобы вернуться к правилу первого ребенка, когда элемент был щелкнуло во второй раз. Причина в том, что это так, потому что на моем сайте, когда вы нажмете один, он отобразит содержимое под ним. Когда щелкнут другой элемент, он отобразит новый контент и скроет предыдущее, но при повторном нажатии он вернет содержимое обратно к исходному контенту, отображаемому при загрузке страницы. Я включу эту функцию в jsFiddle, чтобы вы, ребята, лучше понимали, что происходит на самом деле. Мне не удалось заставить toggleDisplay работать в jsFiddle, но он нормально работает нормально.

ответ

0

Попробуйте проверить, присутствует ли класс 'back' (иначе ссылка была нажата раньше). Если да, то вернуться к правилу первого ребенка:

$(window).load(function(){ 
    $('.innernav li:first-child a').addClass('back'); 
}); 
$("a#bg").click(function(){ 
    var isSecondClick = $(this).hasClass('back'); 
    $('a').removeClass('back'); 
    if (isSecondClick) { 
     $('.innernav li:first-child a').addClass('back'); 
    } else { 
     $(this).addClass('back'); 
    } 
}); 

Your fiddle, updated.

+0

о, ничего себе. легкий как это. Я немного новичок в jQuery, но это очень легко понять. Я даже не подозревал, что это относительно того, что ты делаешь, - аха, но спасибо. Это именно то, что я искал. И спасибо за исправление toggleDisplay для jsFiddle. По какой-то причине это не работало для меня. –

+0

Да, чтобы исправить это для jsFiddle, я изменил второе поле со списком справа на 'no wrap - in '. Это означает, что часть JavaScript будет вставлена ​​прямо перед тегом ' acdcjunior

+0

Удивительный. Я не видел этот параметр в левой колонке. Еще раз спасибо. Я действительно дам вам полное признание на моем сайте. Ты только что сделал через 5 минут, что заставило меня за месяц, чтобы обойти. Думаю, я должен начать собирать книги по jQuery. JavaScript легко для меня, но jQuery намного проще и требует намного меньше кода. –