2011-10-10 118 views
0

我正在开发使用jQuery和其他技术的网站。我在选择器中遇到问题,如下所示。使用jQuery检查html/css属性值

我的网页包含一个与id='tblData'分隔。 里面#tblData我用class='data'创建了多个表格。

在一个表格内(.data),我创建了多个tr和td。其中一些td有class='vis'

根据我的要求,我将这些td.vis的显示属性从block动态更改为none

当页面加载时,我想遍历所有元素。我的条件是我想循环所有td的内部表(class='data'),其display属性不是none

我正在写下面的代码,但它不起作用。

$("div#tblData .data td[class='vis']").each(function (i) { 
    if ($(this).attr('display') != "none") { 
     if ((i % 2) == 0) { 
      $(this).removeClass("comparecontent2").removeClass("comparecontent1").addClass("comparecontent2"); 
     } else { 
      $(this).removeClass("comparecontent2").removeClass("comparecontent1").addClass("comparecontent1"); 
     } 
    } 
}); 

alert($("div#tblData .data td[class='vis']").size()); // shows zero while 'alert($("div#tblData .data td").size())'; 
                 // returns right count. 
+0

TDS不应该被设置为显示块 – jantimon

+0

最初TD的显示属性设置,后来其变为无 –

回答

1

使用这两个命令之一:

.is(":hidden") 
.filter(":hidden") 

http://api.jquery.com/hidden-selector/

例如

$(this).is(":hidden") 

$("td:hidden") 
+0

你错过了结肠上的选择在'是'例子。它的方式,它正在查看它是否是一个“隐藏”元素(例如,像检查它是否是'div'元素)。 *编辑:*啊,你现在已经修好了。 –

+0

是啊,我刚刚从我的床上出来;) – jantimon

+0

没有工作亲爱的 –

1

“display”不是一个属性,它是一个样式属性。您可以使用this.style.display,但您可能需要使用jQuery的:visible selector。请注意,:visible选择器检查除display样式属性以外的其他东西,但它们大多数情况下可能需要检查。有更多的开销,但除非你处于一个非常紧密的循环中,可能并不重要。

因此,要么:

if (this.style.display != "none") 

或者:

if ($(this).is(':visible'))