簡體   English   中英

如何使下拉列表作為if / else目的的選擇?

[英]How to make dropdown list behave as a select for if/else purposes?

我正在使用常規的依存選擇,如以下代碼所示:

HTML:

<select id="select_ciudad">
<option>Madrid</option>
<option>Barcelona</option>


<select id="select_act">
<option>A</option>  
<option>B</option>  


<select id="select_act2" style="display:none">
<option>1</option>
<option>2</option>

</select>

JS:

$( document ).ready(function() {    
 $("#select_ciudad").change(function() {
  if ($("#select_ciudad").val()=="Madrid") {
    $("#select_act").show();
    $("#select_act2").hide(); 
    }

else if ($("#select_ciudad").val()=="Barcelona") {
        $("#select_act2").show();
            $("#select_act").hide();
    };
});

但是現在我不想再使用select了,我用一個css無序列表代替了它,做了類似的事情:

新的HTML:

<section class="main">
            <div class="wrapper">
                <div id="dd" class="wrapper-dropdown"          tabindex="1">
                    <span>Ciudad</span>
                    <ul class="dropdown">
                        <li><a href="#">Madrid</a></li>
                        <li><a href="#">Barcelona</a></li>
                    </ul>
                </div>
            ​</div>
        </section>

現在的問題是,當我單擊任何選項(列表元素)時,我無法以相同的方式使JS工作。 有人知道怎么做嗎?

您可以使用data-屬性為每個<li>元素分配值。 然后,您可以將單擊處理程序綁定到每個<a>元素,並在if-else語句中使用父<li>元素中的值。

但是我建議通過使用CSS類避免if-else語句。

首先將data-屬性添加到<li>元素。 這些值代表選擇器,這些選擇器標識應為該選項顯示的元素。

<ul class="dropdown">
    <li data-selector=".group-madrid"><a href="#">Madrid</a></li>
    <li data-selector=".group-barcelona"><a href="#">Barcelona</a></li>
</ul>

然后將CSS類放在要顯示/隱藏的元素上。 使用一個類(在這種情況下為“組”)來標識所有此類元素。 然后為每個元素分配第二類(在本例中為“ group-madrid”或“ group-barcelona”),以將它們與上述項目之一綁定。

<select id="select_act" class="group group-madrid">
    ...
</select>
<select id="select_act2" class="group group-barcelona">
    ...
</select>

然后將單擊處理程序綁定到<a>元素。

$(document).ready(function() {
    $('ul.dropdown').on('click', '>li>a', function(e) {
        e.preventDefault();
        $('.group').hide();
        $($(this).parent('li').attr('data-selector')).show();
    }).children('li:first').children('a:first').click();
});

JSFiddle上的演示

上面的代碼實際上使用事件委托,將單個單擊處理程序綁定到<ul>元素,但是在執行回調時, this引用的是單擊的<a>元素。

如果不是很明顯,我這樣做的原因是您可以向現有組中添加更多組或更多元素,而不必完全更改JavaScript代碼,如jsfiddle所示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM