[英]Parsing horribly deprecated HTML with jQuery
我在理解如何在jQuery中使用嵌套選擇器時遇到了一些麻煩。 我正在解析我大學的課程列表,我希望它讓我知道我想要的課程是否開放。 但是,該網站完全不使用css AT,因此識別我想要的類的唯一方法是打開字體,即讀取字體標簽的color屬性。
這是我要閱讀的HTML塊
<TD><FONT FACE='Arial' SIZE='-1' COLOR='Black'>nameOfClass</TD>
這是我嘗試閱讀的方式,如果nameOfClass的字體標簽屬性顏色為“黑色”(表示黑色),則顯示警告。 這很討厭,但它是我可以知道該類是否可用的唯一方法。
function main() {
$(document).ready(function(){
if $("td").text()=="nameOfClass"
if $(this "font").attr("COLOR")=="Black" {
alert("It actually works!");
}
});
我運行此程序時從未收到警報。 我很確定它是我的語法,因為我做了任何形式的編碼已經很長時間了,所以我可能會犯一些愚蠢的錯誤。
您可以使用.children
。 但是為了使代碼正常工作,您必須遍歷所有td
元素,而不僅僅是比較第一個元素的文本值:
$("td").each(function() {
if($(this).text() === 'nameOfClass' &&
$(this).children('font').attr('color') === 'Black') {
alert("It actually works!");
}
});
否則, $("td").text()=="nameOfClass"
僅測試頁面中第一個 td
元素的文本是否為“ nameOfClass”,這當然不是您想要的。 您要查找包含該字符串的所有td
元素。
如果直接使用屬性選擇器選擇其color
屬性值為“ Black”的所有font
元素,則可以使操作簡單得多。 然后, 篩選出不包含類名的元素,並計算剩余的元素數 。 如果沒有,則該類未打開。
var classIsOpen = $('font[color="Black"]').filter(function() {
return $(this).text() === 'nameOfClass';
}).length > 0;
如果類名稱可能作為其他名稱的一部分出現,例如“ Web”和“ Advanced Web”,則只需對其進行精確比較。 如果不是這種情況,可以使用:contains
選擇器使代碼更短:
var classIsOpen = $('font[color="Black"]:contains("nameOfClass")').length > 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.