簡體   English   中英

用jQuery解析不推薦使用的HTML

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM