2013-09-24 72 views
2

我有以下的jQuery:從選擇框jquery隱藏/顯示div不工作,我不明白爲什麼?

<script> 
    $(document).ready(function() { 
     $(".search_type").hide(); 
     $("#select_search").change(function() { 
      $('#' + $(this).val()).toggle(); 
     }); 
    }); 
</script> 
<select id="select_search"> 
     <option value="1"> 
     <option value="2"> 
     <option value="3"> 
</select> 
<div id="1" class="search_type">Some Text</div> 
<div id="2" class="search_type">Some Text</div> 
<div id="3"class="search_type">Some Text</div> 
enter code here 

目前,我有它顯示基於選擇框的變化相應的div,但是,這不,如果選擇框再次更改刪除它。

是否有一個if(($ this):not.val()).....有什麼隱藏的東西?對不起,我是JS/jQuery的新手,在這裏真的很掙扎。

+0

請分享相關的HTML –

+0

見下文 –

回答

2

你需要隱藏以前顯示的元素,一個簡單的方法來起訴隱藏所有search_type再次元素的變化處理,然後顯示當前元素

jQuery(function ($) { 
    var $stypes = $(".search_type").hide(); 
    $("#select_search").change(function() { 
     $stypes.hide(); 
     $('#' + $(this).val()).show(); 
    }).change(); 
}); 

演示:Fiddle

0

沒有,但你可以做到這一點,像這樣:

$(document).ready(function() { 
    $(".search_type").hide(); 
    $("#select_search").change(function() { 
     $(".search_type").hide(); 
     $("#" + $(this).val()).show(); 
    }); 
}); 

這會隱藏與類search_type所有元素則顯示選擇。

你也可以做一個佔位符變量,像這樣:

var showing; 

$(document).ready(function() { 
    $(".search_type").hide(); 
    $("#select_search").change(function() { 
     if (showing) {showing.hide();} 
     showing = $("#" + $(this).val()); 
     showing.show(); 
    }); 
}); 
+0

我的回答你的「佔位符變量」的例子是行不通的,與_showing.hide行()_會給出錯誤約_showing_是未定義並在顯示所選項目之前停止。 (也可以將_var shown_聲明放在文檔就緒處理程序中,不需要使其成爲全局的。) – nnnnnn

+0

@nnnnnn謝謝我將編輯它。 –

0

我對你的問題有點不清楚,但作爲最好的,我可以告訴你想d在選擇框中顯示與用戶選擇相對應的一個DIV。如果用戶選擇不同的選項,您想隱藏以前的顯示框,請更正?

我覺得這個樣本將幫助您:http://jsfiddle.net/HaMQr/

有一個$.not(object)方法,將採取任何匹配對象是不是你提供一個行動。請參見下面的代碼:

$("#select_search").change(function() { 
    var activeBox = $('#' + $(this).val()); 
    activeBox.show(); 

    $('div').not(activeBox).hide();     
});