【问题标题】:Utilizing jQuery Selectors to simplify HTML parser code利用 jQuery 选择器简化 HTML 解析器代码
【发布时间】:2014-12-06 18:30:04
【问题描述】:

此代码使用 jQuery find() 和几个 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);

                    }
            }
        }
    }
});

【问题讨论】:

    标签: javascript jquery html jquery-selectors


    【解决方案1】:

    对于我留下的最后一件事,您想检查主题是否在索引 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 语句中。不在外面。
    • @Ido 糟糕,我在发布问题时不小心删除了我的 url 变量。我现在把它放回代码中,所以它应该更有意义。既然您知道 url 与 find() 的关系,是否可以在选择器中检查索引?
    • @Ido 另外,选择器应该选择不以Re: 开头的a 元素。看起来您的解决方案只选择 do 包含 Re: 的元素
    • @Farad 我已经更新了代码,我猜是可用的最少语句..
    猜你喜欢
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2019-12-24
    • 2011-02-06
    相关资源
    最近更新 更多