2014-04-25 107 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

絕對..將更新 –