Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
jQuery遍历可能的元素以查看它们是否存在?_Jquery_Loops_Jquery Selectors - Fatal编程技术网

jQuery遍历可能的元素以查看它们是否存在?

jQuery遍历可能的元素以查看它们是否存在?,jquery,loops,jquery-selectors,Jquery,Loops,Jquery Selectors,我有一些类似这样的jQuery: $('#mydiv1').css('color', 'red'); $('#mydiv2').css('color', 'blue'); $('#mydiv3').css('color', 'green'); $('#mydiv4').css('color', 'orange'); $('#mydiv5').css('color', 'purple'); 我认为应该是这样的,所以它只有在元素存在时才起作用: if ($('#mydiv1').length) {

我有一些类似这样的jQuery:

$('#mydiv1').css('color', 'red');
$('#mydiv2').css('color', 'blue');
$('#mydiv3').css('color', 'green');
$('#mydiv4').css('color', 'orange');
$('#mydiv5').css('color', 'purple');
我认为应该是这样的,所以它只有在元素存在时才起作用:

if ($('#mydiv1').length) {.css('color', 'red')}
if ($('#mydiv2').length) {.css('color', 'blue')}
if ($('#mydiv3').length) {.css('color', 'green')}
...

有没有更好的方法来检查元素是否存在,使用这种命名约定?类似于“for each 35; mydiv(n)”之类的东西?

jQuery不需要检查元素是否存在。如果找不到匹配的元素,它将不会做任何事情

如果您希望采用一种较短的方式将CSS应用于遵循该模式的所有ID,那么您可以执行以下操作:

var colors = ['red', 'blue', 'green', 'orange', 'purple'];
for (var i = 0; i < 5; i++) {
    $('#mydiv' + (i+1)).css('color', colors[i]);
}

jQuery
函数(
$
)返回一个元素集合(决不是
null
undefined
值),因此如果给定选择器集合的
length
为0,则不会执行代码(在您的示例中是
.css()
调用),或者导致类似于
null
引用异常的任何情况。

并且尝试然后避免对不存在的元素进行操作不会增加任何额外的应变/加载时间?@nathan,从技术上讲是这样的,但这并不重要。jQuery实际上不会尝试应用CSS,
.CSS()
方法会意识到它没有什么需要处理的,所以它不会做任何事情。太好了,这个数组或其他什么,for-var-i,正是我所需要的。谢谢在这样的循环中使用“.length”有什么用处吗?(我在我原来的帖子里忘了“长度”,但我只是加了一个…)@nathan,不,不是真的
.length
是检查是否存在任何元素的正确方法,但此处并不需要它。
$('[id^=mydiv]').each(function (i) {
    $(this).css('color', colors[i]);
});