Javascript jQuery发现不存在对象
我尝试检测以下内容中是否存在某些内容:Javascript jQuery发现不存在对象,javascript,jquery,select,option,exists,Javascript,Jquery,Select,Option,Exists,我尝试检测以下内容中是否存在某些内容: var listBoxSelector = $("div#selectors select:eq(1)"); var option = listBoxSelector.find("option[value=" + value + "]:eq(0)"); alert(option); 但若这样的选项不存在,我将在任何情况下接收对象。检测具有某个值的is是否存在的更好方法是什么?您可以使用jQuery对象的属性: jQuery对象中的元素数 检查选项对象的长
var listBoxSelector = $("div#selectors select:eq(1)");
var option = listBoxSelector.find("option[value=" + value + "]:eq(0)");
alert(option);
但若这样的选项不存在,我将在任何情况下接收对象。检测具有某个值的is是否存在的更好方法是什么?您可以使用jQuery对象的属性:
jQuery对象中的元素数
检查
选项
对象的长度
:
var listBoxSelector = $("div#selectors select:eq(1)");
var option = listBoxSelector.find("option[value=" + value + "]:eq(0)");
if (option.length>0){
alert(option);
}
我用下面的插件回答了同样的问题。有关创建插件的详细信息,请访问answer
如果元素存在,下面的插件将允许您使用回调功能(与jQuery样式的标记保持内联)。例如,您可以执行以下操作:
listBoxSelector.exist(function() { // will ONLY fire if this element even exist
alert($(this).find("option[value=" + value + "]:eq(0)"));
})
插件
(函数($){
如果(!$存在){
$扩展({
存在:函数(){
var ele、CBM EXIST、CBM NOTEXIST;
if(arguments.length){
for(参数中的x){
开关(参数类型[x]){
案例“功能”:
如果(类型CBMEIST==“未定义”)CBMEIST=参数[x];
else cbmNotExist=参数[x];
打破
案例“对象”:
if(arguments[x]instanceof jQuery)ele=arguments[x];
否则{
var obj=参数[x];
对于(obj中的y){
if(对象类型[y]=“功能”){
如果(CBMEIST的类型==“未定义”)CBMEIST=obj[y];
else cbmNotExist=obj[y];
}
if(object[y]的类型=='object'&&obj[y]jQuery实例)ele=obj[y];
如果(对象类型[y]=“字符串”)ele=$(对象类型[y]);
}
}
打破
大小写“string”:
ele=$(参数[x]);
打破
}
}
}
if(typeof cbmExist=='function'){//至少有一个回调方法
var exist=ele.length>0?true:false;//布尔值的严格设置
如果(存在){//元素确实存在
返回ele.each(函数(i){cbmExist.apply(this[exist,ele,i]);});
}
else if(cbmNotExist的类型=='function'){
cbmNotExist.apply(ele[exist,ele]);
返回ele;
}
否则{
if(ele.length 0?真:假;
否则返回元素长度;
}
}
else{//没有回调方法,因此根据元素existant length返回是否存在
if(ele.length 0?true:false;//严格返回布尔值
else返回ele.length;//返回此元素存在的实际长度
}
return false;//仅当出现错误时才命中!
}
});
$.fn.extend({
存在:函数(){
var args=[$(本)];
(参数中的x)args.push(参数[x])的if(参数.length);
返回$.exist.apply($,args);
}
});
}
})(jQuery);
你忘了
.length
吗?事实上,它不起作用。
if(listBoxSelector.find("option[value=" + value + "]:eq(0)") == 0){
//nothing found
}
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);