首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >了解jQuery each循环

了解jQuery each循环
EN

Stack Overflow用户
提问于 2011-10-26 20:45:02
回答 3查看 387关注 0票数 4

我有以下代码:

HTML:

代码语言:javascript
运行
复制
<div class="sectionInner"><div class="carousel"></div></div>
<div class="sectionInner"></div>
<div class="sectionInner"></div>
<div class="sectionInner"></div>

JS:

代码语言:javascript
运行
复制
function checkForCarousel() {
    $('.sectionInner').each(function(i) {
        if($(this).has('.carousel')) {
            alert('We got a Carousel!');
        }
        else {
            alert('No Carousels here')
        }
    });
}

checkForCarousel();

我要做的是循环遍历四个div.sectionInner,如果我找到一个类为carousel的子类,那么我想要附加一些按钮。我知道我可以直接瞄准旋转木马,但这是更大图景的一部分,我确实有理由想要使用循环。

无论如何,当循环开始时,它会警告“我们得到了一个旋转木马”,正如你对第一个div所期望的那样。然后,当很明显我们没有其他三个div的Carousel时,它会继续警告“我们有一个Carousel”。我在这里做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-26 20:48:41

这是因为您正在测试一个始终为true的jQuery对象的存在。相反,您需要测试length > 0

代码语言:javascript
运行
复制
if($(this).has('.carousel').length) { // is false if length == 0

http://jsfiddle.net/mblase75/DzafK/

票数 9
EN

Stack Overflow用户

发布于 2011-10-26 21:07:09

这是javascript中“the”和"falsey“值的典型例子。您将注意到$(this).has('.carousel')将返回一个对象。在javascript中,对象总是真实的。请参阅以下链接:

http://james.padolsey.com/javascript/truthy-falsey/?utm_source=javascriptweekly&utm_medium=email

票数 3
EN

Stack Overflow用户

发布于 2011-10-26 20:49:21

代码语言:javascript
运行
复制
$('.sectionInner').each(function(i) {
    if ($('div', this).hasClass('carousel')) {
        alert('We got a Carousel!');
    }
    else {
        alert('No Carousels here')
    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7902743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档