if($(选择器).length>0){ //做点什么 }
17个答案
jQuery.fn.exists=function(){return this.length>0;} if($(选择器).exists()){ //做点什么 }
jQuery.fn.exists=function(){return($(this).length>0);} if($(选择器).exists()){}
jQuery.exists=函数(选择器){return($(选择器).length>0);} if($.exists(选择器)){}
if($('#myDiv').length){/*做某事*/}
if($('#myDiv')[0]){/*做某事*/}
if(document.getElementById('element_id')){ //做点什么 }
-
61 -
35 -
38 -
27 还记得我们只有document.getElementById的美好时光吗? 我总是忘记带文件。 我不明白为什么它不起作用。我总是拼写错误,字符大小写错误。 – 只有约翰 评论 2014年11月18日21:05
if($(选择器).is('*')){ //做点什么 }
-
41 -
1 -
4 这对于非常简单的任务来说非常昂贵。 只需查看jquery实现if.is(),您就会看到它需要处理多少代码才能回答这个简单的问题。 此外,您想要做什么也不太明显,所以它与所讨论的解决方案相同,或者可能不太优雅。 – 微型计算机 评论 2016年2月22日19:59
插件
;; (函数($){ 如果(!$.存在){ 扩展美元({ 存在:函数(){ var ele、cbm存在、cbm不存在; if(arguments.length){ for(参数中的x){ switch(参数类型[x]){ 案例“功能”: if(类型cbmExist==“未定义”)cbmExist=参数[x]; else cbmNotExist=参数[x]; 断裂; case“对象”: if(arguments[x]实例jQuery)ele=arguments[x]; 其他{ var obj=参数[x]; for(obj中的y){ if(obj[y]的类型=“函数”){ if(类型cbmExist==“未定义”)cbmExist=obj[y]; else cbmNotExist=对象[y]; } if(对象类型[y]==“对象”&&obj[y]jQuery实例)ele=obj[y]; if(对象类型[y]==“字符串”)ele=$(对象[y]); } } 断裂; case“字符串”: ele=$(参数[x]); 断裂; } } } if(cbmExist的类型==“函数”){ var存在=标高长度>0? 真:假; if(存在){ return ele.each(函数(i){cbmExist.apply(this,[exist,ele,i]);}); } else if(cbmNotExist类型==“函数”){ cbmNotExist.apply(ele,[exist,ele]); 返回ele; } 其他{ 如果(ele.length<=1)返回ele.lenngth>0? 真:假; 否则返回ele.length; } } 其他{ 如果(ele.length<=1)返回ele.lenngth>0? 真:假; 否则返回ele.length; } 返回false; } }); $.fn.扩展({ 存在:函数(){ var参数=[$(this)]; if(arguments.length)for(x in arguments)args.push(argumements[x]); 返回$.exist.apply($,args); } }); } })(jQuery);
使用示例
if($.exist('#eleID')){/*DO WORK*/}//参数为字符串 if($.exist($('#eleID'))){/*DO WORK*/}//param作为jQuery OBJECT if($('#eleID').exist()){/*DO WORK*/}//赋给jQuery OBJECT $.exist('#eleID',function(){//param是STRING&&CALLBACK METHOD /*做工作*/ /*仅当元素存在时才会触发*/ },function(){//param是STRING&&CALLBACK METHOD /*做工作*/ /*只有当元素不存在时才会触发*/ }) $(“#eleID”).exist(function(){//用CALLBACK METHOD赋给jQuery OBJECT /*做工作*/ /*仅当元素存在时才会触发*/ }) $.exist({//param是包含2个键|值对的OBJECT:element=STRING,callback=METHOD 元素:'#eleID', 回调:函数(){ /*做工作*/ /*仅当元素存在时才会触发*/ } })
$.fn.exists=$.fn-exists ||函数(){ 返回!! (this.length&&(HTMLDocument的这个[0]实例|| HTMLElement的这个[0实例); }
$(1980).exists()// 返回false $([1,2,3]).exists()// 返回false $({name:'stackoverflow',url:' 网址:http://www.stackoverflow.com '}).exists()// 返回false $([{nodeName:'foo'}]).exists()//返回false $('div').exists()// 返回true $('.header').exists()// 返回true $(文档).exists()// 返回true $('body').exists()// 返回true
function elementIfExists(选择器){//故意这样命名,请参见下文 return document.querySelector(选择器); } /*用法:*/ var myelement=elementIf存在(“#myid”)||myfallbackelement;
var myel=元素If存在(“#myid”); //现在我们正在使用对删除后仍将存在的元素的引用 myel.getParentNode.removeChild(myel); console.log(elementIfExists(“#myid”));/* 空*/ console.log(myel);/* 巨大的桌子从文档中分离出来,在周围徘徊*/ myel=空;/* 现在可以进行垃圾收集了*/
/*本地范围内的myel即使在休息时也会收集垃圾*/ 对于(var myel;myel=元素IfExist(sel)); myel.getParentNode.removeChild(myel)) 如果(myel==myblacklistedel)中断;
功能元素存在(选择器){ 回来!! document.querySelector(选择器); } /*用法:*/ var hastables=元素存在(“table”);/* 将为真或假*/ if(hastables){ /*为漂亮的表插入css样式表*/ } setTimeOut(函数(){if(hastables&&!elementExists(“#mytablecss”)) 警报(“表格布局错误”);}, 3000);
jQuery.contains(容器,已包含)
这个
$.contains()(美元.contains()) 如果第二个参数提供的DOM元素是第一个参数提供DOM元素的后代,则方法返回true,无论它是直接子级还是嵌套得更深。 否则,返回false。 仅支持元素节点; 如果第二个参数是文本或注释节点,
$.contains() 将返回false。
注释 :第一个参数必须是DOM元素,而不是jQuery对象或普通JavaScript对象。
-
4 这不接受选择器,这意味着他必须选择它,也就是说他可以只检查选择的结果。 – 用户1106925 评论 2016年6月4日13:28
var$target=$({}); console.log($target,$target.length); //控制台输出: // ------------------------------------- //[▼对象]1 //►__proto__:对象
if($.isEmptyObject(选择器)||$ (选择器).长度){ throw new Error(“无法使用给定选择器。”); }
$.isEmptyObject('hello')//在Chrome中为FALSE,在IE中为TRUE
-
14 -
@nnnnnn实际上从来没有(我不再使用jQuery)。 但我想3年前我有一个公开API的案例,该API将使用选择器并返回该选择器的元素数。 如果另一个dev传入一个空对象,它将以1错误地响应。 – 奥列格 评论 2014年12月22日15:03 -
4 -
9 -
4
if(document.querySelector('.a-class')){ //做点什么 }
if(document.getElementsByClassName('a-class')[0]){ //做点什么 }
$.fn.exists=函数(){ return$.contains(document.documentElement,this[0]); }
$.fn.exists=函数(){ return$.contains(document.documentElement,this[0]); } var测试函数=[ 函数(jq){return!!jq[0];}, 函数(jq){return!!jq.length;}, 函数(jq){return jq.exists();}, ]; var输入=[ ["$()",$()], [“$(4)”,$(4)], [“$('#idoexist')”,$('#idoex存在')], [“$(‘#idontexist’)”,$(‘#idontexit’)] ]; for(var i=0,l=inputs.length,tr,input;i<l;i++){ 输入=输入[i][1]; tr=“<tr><td>”+输入[i][0]+“</td><td>” +testFuncs[0](输入)+“</td><td>” +testFuncs[1](输入)+“</td><td>” +testFuncs[2](输入)+“</td></tr>”; $(“表”).append(tr); }
td{边框:1px实心黑色}
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js “></script> #idoexist <表格样式> <tr> <td>输入</td><td>$ (sel)[0]</td><td>$ (sel).长度</td> </tr> </表格> <脚本> $.fn.exists=函数(){ return$.contains(document.documentElement,this[0]); } </script>
函数isExists(选择器){ return document.querySelectorAll(选择器).length>0; }
//检查对象是否存在。 //用法: // //$(选择器).exists() // //或者: // //$(选择器).exists(另一个选择器); jQuery.fn.exists=函数(选择器){ 返回选择器? this.find(选择器).length:this.length; };