Javascript et JQuery, comment vérifier si l’élément option existe dans select?

À l’aide de JQuery, j’essaie de définir une option sélectionnée dans un élément ‘select‘ en fonction de la chaîne de requête.

Cette question est similaire à celle-ci , mais il me rest à savoir comment vérifier si l’élément existe avant d’effectuer la sélection, sinon la page s’actualisera de manière continue (voir la condition de sortie ci-dessous).

La récupération de la chaîne de requête s’effectue à l’aide de la fonction getParameterByName, et tout fonctionne correctement.

La mise en œuvre actuelle ci-dessous:

function setSelectedItem(selectName, itemToSelect) { ///Selects an HTML option element inside a HTML select element based on the value from the query ssortingng. ///The partial name of the HTML select in which 'itemToSelect' must be selected ///The name of the query ssortingng parameter which value is the of the 'option' element to select. //If an items has already been selected, return if ($('select[name*=' + selectName + ']')[0].selectedIndex != 0) return; //Fetches the value from the query ssortingng; if empty, returns var valueToSelect = getParameterByName(itemToSelect); if (valueToSelect == "") return; //Fecthes the HTML select object var selectObject = $('select[name*=' + selectName + ']'); //HERE how to check if 'valueToSelect' does not exist and return? selectObject.val(valueToSelect).attr('selected', 'selected').change(); } 

Mise à jour: La solution qui a fonctionné était:

  //Checks if the option exists, and returns otherwise if (!selectObject.find('option[value=' + valueToSelect + ']').length) return; 

essayez de vérifier selectObject.find('option[value="'+valueToSelect +'"]').length > 0

Vérifiez la longueur du sélecteur:

 var selectObject = $('select[name*=' + selectName + ']'); if (selectObject.length == 0) return; selectObject.val(valueToSelect).attr('selected', 'selected').change(); 

Ou utilisez la conversion booléenne implicite en javascript:

 var selectObject = $('select[name*=' + selectName + ']'); if (!selectObject.length) return; selectObject.val(valueToSelect).attr('selected', 'selected').change(); 

Vous pouvez utiliser .length>0 pour vérifier si l’élément existe. Mais si vous utilisez ce code encore et encore, cela devient un peu gênant, alors j’ai écrit un petit plugin qui assure ce type de fonctionnalité:

 /* doesExist PLUGIN (c) MS */ /* (c) Michael Stadler(MS), */ (function($){ $.fn.doesExist = function() { return jQuery(this).length > 0; }; })(jQuery); 

Usage:

 $('#myDiv').doesExist() // returns a boolean