2011-02-11 33 views
2

我有一些jQuery的是这样的: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')} 
... 

是否有更好的方法来检查,如果元素存在,这个命名约定?就像'每个#mydiv(n)'一样?

回答

4

检查元素是否存在对jQuery没有必要。如果找不到匹配的元素,它将不会执行任何操作。

如果你想要的是采用以下这种模式的CSS到所有ID较短的方式,那么你可以做:

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

如果你想申请文件以便那些颜色(顺序的元素出现在HTML),你可以使用jQuery的attribute-starts-with selector

$('[id^=mydiv]').each(function (i) { 
    $(this).css('color', colors[i]); 
}); 
+0

然后尝试,然后避免作用于不存在的元素不会增加任何额外的应变/加载时间? – nathanbweb 2011-02-11 00:19:27

2

jQuery功能($)返回元素的集合(从来没有一个nullundefined值)因此,如果对于给定的选择器,集合的length为0,则代码(在您的情况下,调用.css())将不会执行,或者导致任何异常,例如null引用异常。

相关问题