Jquery选择器的有效性/范围

Jquery selector validity/scope

本文关键字:范围 有效性 选择器 Jquery      更新时间:2023-09-26

JQuery新手,但想用它在后台预取html页面(大约四个@每个约4kb),但我不太确定我这样做是正确的。

下面是我想出来的代码:

$(document).ready(function() {
    var my_url;
    $('[rel=prefetch][href$=.html]')
        .each(function() {
            my_url = $(this).attr('href')
            $.ajax({
                url: my_url, 
                dataType: 'text',
                headers:{'X-Moz': 'prefetch'} 
            });
        });
});

基本上,我在文档的头部有一些带有'rel=prefetch'的链接,当浏览器不是Firefox时插入上面的代码片段。当检测到'X-Moz: prefetch'标头时,我的应用程序呈现的内容不同,因此在需要时将其发送到这里。

代码应该只是得到html和缓存没有处理脚本,我相信'dataType: text'应该照顾。

将感谢您的关注和建议。查询:

  1. 以上代码有效吗?如果不是,解决办法是什么?
  2. 我需要改变什么来限制选择器的范围为<头>…& lt;/head> section?
$(文档)时函数(){$ (' [rel =预取][href = . html]美元")each(函数(){Var my_url = $(this).attr('href'). ajax({美元url: my_url,数据类型:"文本",标题:{"X-Moz":"预取"}});});});

搞定了。问题是因为当我使用谷歌api链接到jquery时,jquery片段没有运行。当我直接从我的网站提供它时,在这种情况下,所有的js被组合成一个文件,它工作。

我在Safari中使用开发工具时注意到这一点。

完整代码是:

(function ($) {
    $(document).ready(function() {
            var this_browser, my_url;
            // Prefetch pages for non Firefox browsers
            this_browser = new Browser();
            if ( this_browser.getBrowserName() != this_browser.BROWSER_FIREFOX ) {
                // Asynchronously prefetch html as text strings
                // I.E., do not process scripts in incoming html
                // See: http://ernstdehaan.blogspot.com/2009/08/prefetching-files-using-jquery.html
                $('link[rel="prefetch"][href$=".html"]')
                    .each(function() {
                        my_url = $(this).attr('href');
                        $.ajax({
                            url: my_url, 
                            dataType: 'text',
                            headers: {'X-Moz': 'prefetch'} 
                        });
                    });
            }
    });
}(jQuery));

Safari提醒我,"(jQuery)"位正在生成一个错误。

事实证明,这是因为代码是在JQuery加载之前触发的。

还忘了说

$('head link[rel="prefetch"][href$=".html"]')

限制选择器

我还删除了浏览器检测,并将其用于所有浏览器