2015-06-10 122 views
0

我有一個JQuery函數(在另一個Stackoverflow帖子的幫助下)隱藏/顯示div取決於選擇/下拉菜單上當前選擇的內容。這工作正常。JQuery選擇功能不顯示div

當我編輯記錄時,選擇區域的存儲值顯示在選擇/下拉菜單中,但對應的div保持隱藏狀態,直到在選擇區域上進行更改。

代碼

<script> 
    $(document).ready(function() { 
     $('.jshideshow').hide(); 
     $('#id_selection_basis').change(function() { 
      $('.jshideshow').hide(); 
      $('#'+$(this).val()).show(); 
     }) 
    }); 
</script> 

我已經嘗試了上面的代碼的各種組合來顯示DIV馬上就更新查看值,但所有迄今未果。

任何幫助將不勝感激!

+0

請加'問題 – Tushar

回答

0

經過小小的頓悟之後,我想我已經找到了解決方案。希望它可以幫助其他有類似問題的人。

<script> 
    $(document).ready(function() { 
     $('.jshideshow').hide(); 
     var failureValue = $("#id_selection_basis").val(); 
     $('#' + failureValue).show(); 

     $('#id_selection_basis').change(function() { 
      $('.jshideshow').hide(); 
      $('#'+$(this).val()).show(); 
     }) 

    }); 
</script> 
0

請發佈相應的HTML,我無法理解您的確切問題,但我完全拋棄了您的代碼正在執行的操作,因此您可能會從中發現它。

<script> 
    $(document).ready(function() { 

     $('.jshideshow').hide(); // 1 

     $('#id_selection_basis').change(function() { 
      $('.jshideshow').hide(); // 2 
      $('#'+$(this).val()).show(); // 3 
     }) 

    }); 
</script> 
  1. 因爲你是默認隱藏.jshideshow,在你的HTML設置元素上display: none串接或者將它添加到CSS類(這是不是導致雖然您的問題)

  2. 這也隱藏了.jshideshow - 爲什麼你需要隱藏已經隱藏的東西?這是有道理的,如果所有的div顯示/隱藏了這個類,所以你的目標元素調用.show()之前他們隱藏的(見#3)

  3. 任何元素的含量在#id_selection_basis

  4. 值。這顯示

如果要將元素添加到#id_selection_basis,則需要使用$(document).on('change', '#id_selection_basis', function() { ... })來收聽更改事件。事件監聽器在頁面加載時綁定到DOM,因此如果在頁面加載後向DOM添加元素,則需要在$(document)上監聽它。

+0

@布賴恩嗨relevant' HTML,這是演示從我得到的代碼:http://jsfiddle.net/crustyashish/wSW7z/這工作得很好。但是,當我在Django中打開更新視圖並且選擇/下拉列表中有一個值時,相應的div將保持隱藏狀態,直到選擇/下拉菜單發生「更改」。希望這是有道理的,並感謝您的幫助。 – Karl

+0

@Karl在加載頁面時隱藏'.jshideshow',直到觸發'change'事件纔會再次顯示。不要隱藏你想在加載時顯示的div。 – Brian

+0

感謝您的幫助。我認爲我發現了一個解決方案。不知道這是多麼優雅,但它似乎在伎倆!再次感謝。 – Karl