Javascript 利用jQuery选择器简化HTML解析器代码

Javascript 利用jQuery选择器简化HTML解析器代码,javascript,jquery,html,jquery-selectors,Javascript,Jquery,Html,Jquery Selectors,这段代码使用jqueryfind和几个if语句从HTML文档中选择特定文本 我试图删除if语句,并将它们解释为find中的jQuery选择器,位于代码的最顶层。这可能吗?如果是,选择器需要是什么 $(document).find("a[href^='http://fakeURL.com/']").each(function() { var title = $(this).text(); var

这段代码使用jqueryfind和几个if语句从HTML文档中选择特定文本

我试图删除if语句,并将它们解释为find中的jQuery选择器,位于代码的最顶层。这可能吗?如果是,选择器需要是什么

$(document).find("a[href^='http://fakeURL.com/']").each(function()
{                                           
    var title = $(this).text();
    var url = $(this).attr('href');

    if(title.indexOf('Re: ') != 0)
    {
        if($(this).parent().attr('class') != 'quoteheader')
        {
            if(url.indexOf('topic') == 36)
            {
                if($(this).parent().attr('class') == 'middletext')
                    {

                        console.log(title);

                    }
            }
        }
    }
});

关于我离开的最后一件事,你想检查一下主题是否在索引36处吗?不确定它是否可能通过选择器实现,除此之外,所有未测试的选择器代码都应该能够正常工作

$(document).find(".middletext:not(.quoteheader) > a[href^='http://fakeURL.com/']").each(function()
{
    if(url.indexOf('topic') != 36)
        return;

    var title = $(this).text();

    if(title.indexOf('Re: ') != 0)
        return;

    console.log(title);
});

您应该只在if中打印标题。将文本置于if语句外部而不是内部是一种浪费。无论如何,您需要将$this.text行移到if语句内部。不是在外面。@IDOOPS,我在发布问题时不小心删除了url变量。我现在已经把它放回了代码中,所以它应该更有意义。既然您知道url与find的关系,那么可以在选择器中检查索引吗?@Ido另外,选择器应该选择一个不以Re开头的元素:。看起来您的解决方案只选择了包含Re:@Farad的元素。我已经更新了代码,我想这是可用的最小语句。。