Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用给定根查找所有可见元素_Javascript_Jquery - Fatal编程技术网

Javascript 使用给定根查找所有可见元素

Javascript 使用给定根查找所有可见元素,javascript,jquery,Javascript,Jquery,给定以下代码 var a = $('<div><div></div></div>'); a.css("visibility", "visible"); a.find("* :visible"); var a=$(''); a、 css(“可见性”、“可见”); a、 查找(“*:可见”); 因此,我收到一个空数组[],而不是div。我做错了什么?您尚未将元素添加到页面中,因此它尚未调整大小。大小为零的元素不可视。要检查元素是否可见,必须将其插入

给定以下代码

var a = $('<div><div></div></div>');
a.css("visibility", "visible");
a.find("* :visible");
var a=$('');
a、 css(“可见性”、“可见”);
a、 查找(“*:可见”);

因此,我收到一个空数组
[]
,而不是
div
。我做错了什么?

您尚未将元素添加到页面中,因此它尚未调整大小。大小为零的元素不可视。

要检查元素是否可见,必须将其插入DOM中。您也不需要
*
选择器。试试这个:

var a = $('<div><div></div></div>'); // create an element
a.css("visibility", "visible");
$("BODY").append(a) // Add the element to the DOM first
a.find(":visible")

alert(a.find(":visible").length); // displays '1'
var a=$('');//创建一个元素
a、 css(“可见性”、“可见”);
$(“BODY”).append(a)//首先将元素添加到DOM中
a、 查找(“:可见”)
警报(a.find(“:visible”).length);//显示“1”

如果没有*选择器,查询将返回外部元素而不是内部元素。@Guffa我已经测试过了,事实并非如此。使用和不使用
*
返回1个元素。这是因为它恰好是外部元素中的一个元素。关键是查询返回不同的元素。如果没有
*
,结果是不一样的。您是正确的,没有
*
,结果是不同的-很抱歉,这是我之前评论中的一个错误。但是,
*
绝对不应在该小提琴的选择器中使用,以证明:是的,您是对的,不应使用*,因为使用了
find
方法,该方法在所选元素内搜索。