Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery发现不存在对象_Javascript_Jquery_Select_Option_Exists - Fatal编程技术网

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);