使用JQuery,我尝试在选择'中选择一个选项。基于查询字符串的元素。
这个问题类似于this,但是我仍然需要知道如何在执行选择之前检查元素是否存在,否则页面将自动刷新(请参阅下面的退出条件)。
使用函数getParameterByName获取查询字符串,并且它正常工作。
目前的实施如下:
function setSelectedItem(selectName, itemToSelect) {
///<summary>Selects an HTML option element inside a HTML select element based on the value from the query string.</summary>
///<param name="selectName" type="string">The partial name of the HTML select in which 'itemToSelect' must be selected</param>
///<param name="itemToSelect" type="string">The name of the query string parameter which value is the of the 'option' element to select.</param>
//If an items has already been selected, return
if ($('select[name*=' + selectName + ']')[0].selectedIndex != 0) return;
//Fetches the value from the query string; 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();
}
更新:有效的解决方案是:
//Checks if the option exists, and returns otherwise
if (!selectObject.find('option[value=' + valueToSelect + ']').length)
return;
答案 0 :(得分:18)
尝试检查selectObject.find('option[value="'+valueToSelect +'"]').length > 0
答案 1 :(得分:2)
检查选择器的长度:
var selectObject = $('select[name*=' + selectName + ']');
if (selectObject.length == 0)
return;
selectObject.val(valueToSelect).attr('selected', 'selected').change();
或者在javascript中使用隐式布尔转换:
var selectObject = $('select[name*=' + selectName + ']');
if (!selectObject.length)
return;
selectObject.val(valueToSelect).attr('selected', 'selected').change();
答案 2 :(得分:0)
您可以使用.length>0
检查元素是否存在。但是如果你一遍又一遍地运行这个代码就会有点讨厌,所以我写了一个小插件来确保这种功能:
/* doesExist PLUGIN (c) MS */
/* (c) Michael Stadler(MS), */
(function($){
$.fn.doesExist = function()
{
return jQuery(this).length > 0;
};
})(jQuery);
<强>用法:强>
$('#myDiv').doesExist() // returns a boolean