Javascript 如何表达';没有';在jquery中?

Javascript 如何表达';没有';在jquery中?,javascript,jquery,html,Javascript,Jquery,Html,对于我们应用程序中的某个页面,加载该页面时会在列表中生成一定数量的客户。当一个人在这个页面上向下滚动时,更多的客户会出现在列表的底部,以此类推,直到一个人一直向下滚动,没有更多的客户可以生成 我试图在.on()函数中检查底部新生成的客户是否有时钟图标,如果没有,则向新客户添加时钟图标。这是我的支票: var isClock = $(timepickers).parent().has('.clockIcon').length ? '' : addClock; if (typeof

对于我们应用程序中的某个页面,加载该页面时会在列表中生成一定数量的客户。当一个人在这个页面上向下滚动时,更多的客户会出现在列表的底部,以此类推,直到一个人一直向下滚动,没有更多的客户可以生成

我试图在.on()函数中检查底部新生成的客户是否有时钟图标,如果没有,则向新客户添加时钟图标。这是我的支票:

    var isClock = $(timepickers).parent().has('.clockIcon').length ? '' : addClock;
    if (typeof isClock === 'function') {
        isClock();
    }
问题是,最初出现在页面上的客户当然有时钟图标,因此,由于一些客户有时钟图标,因此不会将其添加到任何现在没有时钟图标的客户中。.has()从那以后做的更多,但我喜欢.is()的想法,因为它在jquery网站上说:

对照选择器、元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定参数匹配,则返回true。


这就是我需要它来检查是否有任何客户没有时钟图标,然后添加它。我想不出使用.is()的方法,所以我想改为使用.not():看看是否有客户没有时钟图标,然后运行该函数。但我不知道如何说“如果某物没有某物”如果某物不是某物“不”。有人知道怎么做吗???

只要否定这个表达式就行了

var isClock = ( ! $(timepickers).parent().has('.clockIcon').length ) ) ? '' : addClock;

not()
代替
has()
我想到的第一件事是

但对于您的案例来说,它甚至可能不是最简单的

请参见jQuery。也可以通过这种方式查看每个项目的父项并单独检查:

$(timepickers).each(function () {
    // If the parent doesn't have clockIcon then add it
    if (!$(this).parent().hasClass('clockIcon')) {
        addClock();
    }
});
虽然不太漂亮(我不知道jQuery),但如果带有图标的元素不等于元素总数,就会触发事件

var isClock = $(timepickers).parent().has('.clockIcon').length == $(timepickers).length ?  "" : addClock;
    if (typeof isClock === 'function') {
        isClock();
     }

话虽如此,我相信有一种简洁的方法可以通过适当的jQuery实现这一点

我想你要寻找的是“并非全部”的概念。我在谷歌上搜索了“jQuery并非全部”,但我不确定我要找的是什么。这是一个众所周知的概念吗?它是如何实现的?父级不会将class.clockIcon添加到它,而是在页面加载时将class.clockIcon附加到一个div。问题在于页面加载后生成的客户。@Tanya我已经更新了答案,以满足您的要求。也许你应该发布父母在有时钟图标和没有时钟图标时的HTML。这将有助于我们回答你。这最终对我有用$(timepickers).parent().not(':has(.clockIcon)).append(timepickerMarkup);您应该能够稍微将其改进为
。而不是(“.clockIcon”)
var isClock = $(timepickers).parent().has('.clockIcon').length == $(timepickers).length ?  "" : addClock;
    if (typeof isClock === 'function') {
        isClock();
     }