使用jQuery查看div是否有一个具有特定类的孩子


114

我有一个div #popup,它随班级动态填充了几个段落.filled-text。我正在尝试让jQuery告诉我其中是否#popup包含这些段落之一。

我有此代码:

$("#text-field").keydown(function(event) {
    if($('#popup').has('p.filled-text')) {
        console.log("Found");
     }
});

有什么建议?


1
您是在寻找孩子还是任何后代(孩子,孙子,曾孙等)?问题标题当前说的是“孩子”,但答案似乎是关于任意后代的。
hippietrail

当时我相信我是在专门寻找孩子,但是由于这个问题将近4岁,因此很难确定。无论哪种方式,问题和答案都涵盖儿童和后代,并且也有针对儿童而不是后代的答案,因此我不确定您要了解的内容。
Samsquanch '16

哦,就是这样,当使用搜索引擎来查找有关与子元素与选择器匹配的元素的问题时,它就是找到的那个元素,因此如果它不准确地帮助其他人查找,我将对问题标题进行调整未来的正确问题。
hippietrail

Answers:




7

使用儿童的jQuery funcion。

$("#text-field").keydown(function(event) {
    if($('#popup').children('p.filled-text').length > 0) {
        console.log("Found");
     }
});

$.children('').length 将返回与选择器匹配的子元素的数量。


1
.size()返回与.length属性相同的属性,但速度较慢,因此应替换该属性。
JohannesKlauß'12

感谢约翰尼斯指出我的意思!我不知道 Answare更新!
克里斯托弗·拉米雷斯

不客气,但仍然有一个错误。这是.length不是.length()
约翰内斯Klauß

:PI认为这是大多数jQuery接口一样的功能。我认为有点不一致。但是,好的软件再次更新了:P谢谢约翰尼斯。
克里斯托弗·拉米雷斯

.length属性不是jQuery库的一部分,它只是本机javascript。但是,是的,有时可能会造成混淆。
2012年

4

简单方法

if ($('#text-field > p.filled-text').length != 0)

2
.size()方法在功能上等效于.length属性;但是,首选.length属性,因为它没有函数调用的开销。
Hitesh Modha 2014年

1

如果是直子,则可以将其嵌套得更深,请执行以下操作,请删除>

$("#text-field").keydown(function(event) {
    if($('#popup>p.filled-text').length !== 0) {
        console.log("Found");
     }
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.