如何在jQuery中找到具有特定id的div是否存在?
如何在jQuery中找到具有特定id的div是否存在?
点击元素时,我有一个函数,它会将添加到该元素上。该函数获取被点击元素的文本,并将其赋值给一个名为
name
的变量。然后,该变量被用作附加元素的
id
。\n在附加元素之前,我需要检查是否已经存在一个带有name
的
id
,但我不知道如何找到它。\n这是我的代码:\n
$("li.friend").live('click', function() { name = $(this).text(); // if-statement checking for existence of should go here // 如果不存在,则附加元素 $("div#chatbar").append("" + name + ""); // 否则 alert('this record already exists'); });
\n这似乎非常简单,但我收到了“在搜索类名时出现意外的文件结束”的错误。我不知道这是什么意思。\n
if (document.getElementById(name)) { $("div#" + name).css({bottom: '30px'}); } else { $("div#page-content div#chatbar").append("" + name + ""); }
\n更重要的是,我希望能够在关闭元素时删除它,这应该从文档中删除div id [name]
,但.remove()
无法做到这一点。\n以下是此功能的代码:\n
$(".mini-close").live('click', function(){ $(this).parent().remove(); });
\n我将.mini-close
作为.labels
的子元素添加到附加函数中,以便在需要时关闭附加的。单击
.mini-close
并尝试再次从li.friends
点击相同的名称时,它仍然会找到div id [name]
并返回我if
语句的第一部分。
使用jQuery中的length属性可以判断特定id的div元素是否存在。如果length返回一个值,那么该元素存在;否则,该元素不存在。
具体的解决方法是使用if条件语句,通过判断选择器的length属性来确定特定id的div元素是否存在。如果使用id选择器,则应使用$('#selector').length来判断;如果使用class选择器,则应使用$('.selector').length来判断。
以下是具体的代码示例:
if( $('#selector').length ) // 使用这个条件判断语句来检查id选择器 { // 元素存在 } if( $('.selector').length ) // 使用这个条件判断语句来检查class选择器 { // 元素存在 }
问题的出现原因是用户想要在jQuery中找到具有特定id的div元素。用户提供了一种解决方法,即使用getElementById的返回值作为条件进行判断。如果返回值不为null,则表示div元素存在,否则表示div元素不存在。然而,用户在将alert()函数替换为其他函数时遇到了错误。错误提示为“unexpected end of file while searching for class name”,可能是缺少了括号或分号的问题。用户还提出了是否有其他解决方法的问题。
解决方法是使用循环遍历数组,并针对每个数组元素调用getElementById方法,以找到每个具有特定id的div元素。
如何在jQuery中查找特定id的div是否存在?
问题的原因:通过判断特定id的div是否存在,可以根据不同的情况执行相应的操作。这个问题的解决方法是使用jQuery的选择器和.length属性来判断div是否存在。
解决方法:可以使用选择器和.length属性来判断特定id的div是否存在。代码示例如下:
if ($("#" + name).length == 0) { //it doesn't exist }
完整的版本如下:
$("li.friend").live('click', function(){ name = $(this).text(); if ($("#" + name).length == 0) { $("div#chatbar").append("" + name + ""); } else { alert('this record already exists'); } });
或者,如果是ID的话,也可以使用非jQuery的方法来判断:
$("li.friend").live('click', function(){ name = $(this).text(); if (document.getElementById(name) == null) { $("div#chatbar").append("" + name + ""); } else { alert('this record already exists'); } });
这里有一些关于代码的讨论:
- 有人遇到问题,通过弹出特定id的div的长度来进行排查,但是没有找到。
- 有人建议提供示例标记代码,因为这个问题相对简单,所以应该很容易解决。
- 有人指出如果$("#" + name).length) { }这样的判断已经足够,不需要判断是否等于0。
- 有人指出这种判断是相反的,正确的写法应该是!$("#"+name).length)。
- 有人提醒说代码末尾的.append()行缺少一个");"。
- 有人询问是否有其他的解决方法。
- 有人建议提供完整的代码,因为没有展示创建.mini-close元素的部分,所以无法确定选择器/遍历是否正确。
- 有人表示不知道自己做错了什么,但现在已经解决了,这意味着你的建议是有效的。谢谢Nick!
- 有人表示不太理解第二个示例怎么是非jQuery的?此外,live()方法已经被弃用并在v1.9中被删除。
- 有人解释说他只是指示问题中的特定部分是非jQuery的,存在检查在很多情况下并不需要或者从jQuery中受益。这个答案是在4年前的,所以在手机上不能编辑。
- 有人建议使用===而不是==来进行比较。