Javascript 检查jQuery中是否存在元素
如果元素是通过Javascript 检查jQuery中是否存在元素,javascript,jquery,Javascript,Jquery,如果元素是通过.append()方法创建的,如何检查该元素是否存在? $('elemId')。长度对我来说不合适 $('elemId')。长度不适用于 我 您需要将#放在元素id之前: $('#elemId').length ---^ 使用vanilla JavaScript,您不需要散列(),例如document.getElementById('id_here'),但是在使用jQuery时,您确实需要像CSS一样基于id将散列放入目标元素。尝试检查选择器的长度,如果它返回了一些东西,那么元
.append()
方法创建的,如何检查该元素是否存在?
$('elemId')。长度对我来说不合适
$('elemId')。长度不适用于
我
您需要将#
放在元素id之前:
$('#elemId').length
---^
使用vanilla JavaScript,您不需要散列(
),例如document.getElementById('id_here')
,但是在使用jQuery时,您确实需要像CSS一样基于id
将散列放入目标元素。尝试检查选择器的长度,如果它返回了一些东西,那么元素必须存在,否则就不存在
if( $('#selector').length ) // use this if you are using id to check
{
// it exists
}
if( $('.selector').length ) // use this if you are using class to check
{
// it exists
}
如果元素上有类,则可以尝试以下操作:
if( $('.exists_content').hasClass('exists_content') ){
//element available
}
试试这个:
if ($("#mydiv").length > 0){
// do something here
}
如果元素不存在,length属性将返回零。您的elemId
顾名思义,是一个Id
属性,您可以执行以下操作来检查它是否存在:
香草JavaScript:如果您有更高级的选择器:
//you can use it for more advanced selectors
if(document.querySelectorAll("#elemId").length){}
if(document.querySelector("#elemId")){}
//you can use it if your selector has only an Id attribute
if(document.getElementById("elemId")){}
jQuery:
if(jQuery("#elemId").length){}
您可以使用本机JS测试对象是否存在:
if (document.getElementById('elemId') instanceof Object){
// do something here
}
别忘了,jQuery只不过是一个围绕本机Javascript命令和属性的复杂(而且非常有用)包装器
如何检查元素是否存在
如果它是0
,它的计算结果将是false
,而不是true
没有必要进行大于或小于的比较 您还可以使用类似数组的表示法并检查第一个元素。
空数组或集合的第一个元素只是未定义
,因此您会得到“正常”的javascript truthy/falsy行为:
var el = $('body')[0];
if (el) {
console.log('element found', el);
}
if (!el) {
console.log('no element found');
}
.length
工作正常,请参见此处:如果您确实使用了
发布您的代码,我们将看到您做错了什么。使用$('.'选择器').length和$('.selector').length作为id和类选择器$(“#选择器选项”).size()检查下拉菜单size.CSS选择器,因此“#elementId”按元素选择。“elementId”实际上会选择所有标记名为“elementId”的emenets@trejder海报很可能不知道Vanilla JS,当他们说“Vanilla JavaScript”时,他们实际上是指基础JavaScript(“Vanilla”在“plain”、“unadarned”中的意思)。@trejder看起来像是“Vanilla JS”与基础JavaScript完全相同(下载的文件总是空的)-有人刚刚决定推销基本Javascript。是的,该网站在嘲笑对名为“Vanilla JS”的框架的需求,该框架只不过是Javascript本身。@trejder应该仔细阅读一下。你“不需要哈希”“仅当您使用了错误的函数时。document.querySelector('id_here')
需要的哈希符号与jQuery等价的$('id_here')一样多。”
。我发现这种方法非常不直观。这几乎就像询问如何确定一个数字是否为负数,然后有人告诉您需要在汇编中编写代码,然后手动旋转CPU寄存器中的一些位,而不是简单地调用.isNegative()之类的方法.检查'length'属性的值会使事情变得混乱。我更希望看到类似于.exists()的内容方法,在扫描代码时可以立即识别。在某些方面,jquery在使javascript更易访问方面取得了长足的进步,但还远远没有成为习惯用法。此解决方案非常直观。length属性告诉您有多少元素与查询匹配。这有什么不直观或不直接的?您可以编写一个更直观的函数:函数exists(elementName){return$(elementName).length;}
这会在控制台中引发异常。jquery.min.js:2 jquery.延迟异常:无法读取未定义类型的属性“length”错误:无法读取未定义类型的属性“length”这对我不起作用。我使用的浏览器是firefox 32.02。请随意粘贴您的代码段谢谢,不再有问题。我已将其替换为此代码段如果元素不存在,你如何检查类。哇,没有看到答案。这个答案应该得到一个金徽章,因为它是最有趣的答案,所以:)你不需要!=null
因为querySelector
将始终返回null
(这是错误的),或者一个元素如果(document.querySelector(“elemId”)!=null)
,我仍然会使用readability@Mrinmoy你的心态要么来自Java,要么来自C。在JavaScript中,我们知道我们有七个falsy值(0,-0,null,undefined',NaN和false),如果(document.querySelector(“elemId”)!=null)考虑到这些falsy值if(document.querySelector(“elemId”)!=null)
对编写更可读的代码没有影响。在JavaScript世界中,强烈建议您了解JavaScript社区的约定,而不是让您的思维方式远离Java或C等结构化编程语言。对于此特定情况下的JavaScript开发人员!=null
是完全冗余的,可读性差得多。@MehranHatami,因此您同意代码只能由javaScripter读取,但如果querySelector()
返回null或0
或其他5个值中的任何一个,他仍会感到困惑querySelectorAll()
和jQuery在未找到元素时具有不同的返回值。请考虑一下,现在的人们在技术和框架上使用多才多艺的语言,所以让事情变得更易读肯定会受益匪浅。顺便说一句,我更像是一个javascripter,而不是java/golangprogrammer@Mrinmoy我同意这是一个有争议的话题,但我所说的不是我的观点,而是事实。在我的团队中,如果我看到有`!=空`我不赞成。虽然这是一种惯例,但它已经成为一种规则,某种程度上。对我来说,最重要的是确保我的团队中的开发人员了解基础知识,并且他们的代码是一致的,没有冗余空`对我来说就像`!=fa
var el = $('body')[0];
if (el) {
console.log('element found', el);
}
if (!el) {
console.log('no element found');
}