从构造函数返回的原始值将丢失

我创建了一个函数:

function CheckHidden(el){ return $(el).css('display')!='none' } 

我的IDE警告我:

使用’new’调用时,构造函数返回的原始值将丢失

实际上当我这样称呼时:

 var all = $("#catalog-body > div").filter(function(){return CheckHidden(this)}) 

它不起作用,也不会将元素集减少到未隐藏的元素集。 请向我解释这个问题。 我缺乏知识。

jQuery实际上有内置的东西。你可以使用:visible选择器。 你可以这样做:

 var all=$("#catalog-body > div").filter(':visible') 

获得可见元素。

我自己遇到了这个警告,如果你想知道原因,那是因为你的IDE期望函数名以小写字母开头。 由于您的函数名为CheckHidden,其大写字母为C,因此它认为它是一个类声明。

但是,您仍然应该使用jQuery的:visible选择器来修复您的特定问题。

如果使用关键字new创建对象(如警告中所述),JS将返回对象的新实例,而不是构造函数的返回值。

function就像

 function CheckHidden() { return false; } 

将返回两个不同的值,具体取决于它的执行方式。

 // "a" is boolean value var a = CheckHidden(); // "a" is an object of type "CheckHidden" var a = new CheckHidden(); 

如果要拉出所有可见的元素,可以使用jQuery的:visible selector

 var all = $("#catalog-body > div:visible") 

相反,如果你想拉出所有隐藏的元素,你可以将它与jQuery的结合:not selector :

 $("#catalog-body > div:not(:visible)")