2014-04-25 3 views
-1

Итак, у меня есть этот код jQuery для добавления и удаления класса на основе значения параметра. Он добавляет класс просто отлично, но не удаляет класс.jQuery не удаляет класс

$(document).ready(function() { 
    $('#mime').change(function(){ 
    var pull = $(this).val(), 
    div = $('#' + pull); 

    if($(this).val(pull)) { 
     div.addClass("active"); 
    } else { 
     div.removeClass("active"); 
    } 
    }); 
}); 

Что я делаю неправильно? Мне нужно предоставить больше кода? Я не понимаю, почему он работает для добавления класса, но не удаляет его. Я также использовал .show() и .hide(), и это работает одинаково. Показывать работы, но скрыть - нет.

+2

Что вы пытаетесь делать с 'если ($ (это) .val (тянуть))'? –

ответ

0

$(this).val() возвращают строку так:

if($(this).val()) { 

будет равна:

if(true) 

, поэтому ваш код никогда не достигнет блока else. Вы должны использовать сравнение здесь:

if($(this).val() == "some value here") { 

, но я думаю, что вы хотите:

$(document).ready(function() { 
    $('#mime').change(function() { 
     var pull = $(this).val(), 
      div = $('#' + pull); 
     $('.active').removeClass("active"); 
     div.addClass("active"); 
    }); 
}); 
+0

Спасибо. Этот вопрос решил мой вопрос. Я вижу, что я сделал не так с вашим объяснением, и я благодарю вас за это. – user3571316

2

вы, вероятно, имел в виду делать:

$(document).ready(function() { 
    $('#mime').change(function(){ 
    var pull = $(this).val(), 
    div = $('#' + pull); 

    if(div.hasClass('active')) { 
     div.removeClass("active"); 
    } else { 
     div.addClass("active"); 
    } 
    }); 
}); 

или лучше:

$(document).ready(function() { 
    $('#mime').change(function(){ 
     var pull = $(this).val(), 
     div = $('#' + pull); 
     div.toggleClass("active");   
    }); 
}); 
+0

, если это так, я бы сказал, что он может полностью избавиться от 'if' и просто использовать' div.toggleClass ('active') ' –

+0

абсолютно .. будет обновлять –

Смежные вопросы