2016-07-17 67 views
0

我有一個選擇菜單和一些div關聯它。我希望選擇菜單根據選擇菜單值隱藏/顯示div。但是,如果jQuery沒有找到關聯div,那麼它應該提醒一些文本。顯示不同的結果,如果沒有在jQuery中找到ID

這裏是我的代碼:

$('select').change(function(){ 
 
    var div = $(this).val(); 
 
    $('#results div').hide(); 
 
    $('#' + div).show(); 
 
});
#results div { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select> 
 
    <option value="div_1">Div 1</option> 
 
    <option value="div_2">Div 2</option> 
 
    <option value="div_3">Div 3</option> 
 
</select> 
 

 
<div id="results"> 
 
    <div id="div_1">Div 1</div> 
 
    <div id="div_2">Div 2</div> 
 
</div>

正如你可以在我的例子中看到上面有沒有DIV 3所以我想警告說,沒有發現DIV 3

任何讚賞怎樣的幫助:) jQuery對象的

+1

您可以檢查,看看是否'.length' jQuery對象是零。這表明選擇器不匹配任何元素。 – Pointy

回答

5

使用length檢查比賽

$('select').change(function() { 
     var $div = $('#' + $(this).val()).show(); 
     if ($div.length) { 
     $('#results div').not($div).hide();    
     } else { 
     alert('No Match') 
     }  
}); 

我個人認爲這是一個糟糕的用戶體驗和更好的方法是刪除或禁用沒有匹配的<option>

$('option').filter(function(){ 
    return !$('#' + this.value).length; 
}).remove()// or prop('disabled', true); 
+0

你爲什麼使用'.not()'? – Omer

+1

不想隱藏正確的目標..對嗎?我在定義目標 – charlietfl

+0

時使用了show(),並且使用$ div變量和'$'符號......你能解釋一下嗎? – Omer

1

檢查這個fiddle

$('select').change(function(){ 
    var div = $(this).val(); 
    $('#results div').hide(); 
    if($('#results').find('#' + div).length > 0){ 
     $('#' + div).show(); 
    } else{ 
     alert("not find") 
    } 
});