我尝试检测是否存在一些:
var listBoxSelector = $("div#selectors select:eq(1)");
var option = listBoxSelector.find("option[value=" + value + "]:eq(0)");
alert(option);
但是,如果不存在这样的选项,无论如何我都会收到 Object 。有什么更好的方法来检测是否存在某种价值?
我尝试检测是否存在一些:
var listBoxSelector = $("div#selectors select:eq(1)");
var option = listBoxSelector.find("option[value=" + value + "]:eq(0)");
alert(option);
但是,如果不存在这样的选项,无论如何我都会收到 Object 。有什么更好的方法来检测是否存在某种价值?
您可以使用length
jQuery 对象的属性:
jQuery 对象中的元素数。
if (listBoxSelector.find("option[value="+value+"]").length) {
alert('Exists')
}
检查对象length
的:option
var listBoxSelector = $("div#selectors select:eq(1)");
var option = listBoxSelector.find("option[value=" + value + "]:eq(0)");
if (option.length>0){
alert(option);
}
我在这里用以下插件回答了同样的问题。有关创建插件的完整详细信息,请访问答案。
如果元素存在,以下插件将允许您使用回调功能(与 jQuery 样式标记保持内联)。因此,对于您的示例,您可能会执行以下操作:
listBoxSelector.exist(function() { // will ONLY fire if this element even exist
alert($(this).find("option[value=" + value + "]:eq(0)"));
})
(function($) {
if (!$.exist) {
$.extend({
exist: function() {
var ele, cbmExist, cbmNotExist;
if (arguments.length) {
for (x in arguments) {
switch (typeof arguments[x]) {
case 'function':
if (typeof cbmExist == "undefined") cbmExist = arguments[x];
else cbmNotExist = arguments[x];
break;
case 'object':
if (arguments[x] instanceof jQuery) ele = arguments[x];
else {
var obj = arguments[x];
for (y in obj) {
if (typeof obj[y] == 'function') {
if (typeof cbmExist == "undefined") cbmExist = obj[y];
else cbmNotExist = obj[y];
}
if (typeof obj[y] == 'object' && obj[y] instanceof jQuery) ele = obj[y];
if (typeof obj[y] == 'string') ele = $(obj[y]);
}
}
break;
case 'string':
ele = $(arguments[x]);
break;
}
}
}
if (typeof cbmExist == 'function') { // has at least one Callback Method
var exist = ele.length > 0 ? true : false; // strict setting of boolean
if (exist) { // Elements do exist
return ele.each(function(i) { cbmExist.apply(this, [exist, ele, i]); });
}
else if (typeof cbmNotExist == 'function') {
cbmNotExist.apply(ele, [exist, ele]);
return ele;
}
else {
if (ele.length <= 1) return ele.length > 0 ? true : false;
else return ele.length;
}
}
else { // has NO callback method, thus return if exist or not based on element existant length
if (ele.length <= 1) return ele.length > 0 ? true : false; // strict return of boolean
else return ele.length; // return actual length for how many of this element exist
}
return false; // only hits if something errored!
}
});
$.fn.extend({
exist: function() {
var args = [$(this)];
if (arguments.length) for (x in arguments) args.push(arguments[x]);
return $.exist.apply($, args);
}
});
}
})(jQuery);
if(listBoxSelector.find("option[value=" + value + "]:eq(0)") == 0){
//nothing found
}