php - 我使用的 jQuery 未检测到 CSS 正文 :after

标签 php jquery css

我正在使用一些 jQuery 来检测是否触发了某个媒体查询,如下所示:

jQuery

var currentSize = "default";
var mqCSS = function () {
    var size = window.getComputedStyle(document.body, ':after').getPropertyValue('content');
    size = size.replace(/"/g, "");
    size = size.replace(/'/g, "");
    return size;
};

function mobile_load_img(obj) {
    size = obj();
    if (size != currentSize) {
        if (size == 'laptop') {
              alert('hello');
            currentSize = 'mobile';
        }
    } //if size

}
mobile_load_img(mqCSS);

CSS

@media only screen and (min-width: 10em) {
    body:after {
        content:'laptop';
        display:none;
    }
}

这应该有效,它在我的主页上有效,但仅在任何其他页面上无效。脚本肯定正在加载。

这是一个 fiddle

我能想到的唯一其他问题可能是我如何对脚本进行排队。我不确定为什么,但我认为这个问题是在我开始设置 tilemtime() 以停止某些 CDN 缓存时发生的。我不太清楚为什么,因为它们看起来都很好。

抱歉代码块:

PHP

function lart_stylesheets() {
    if (!is_admin()) {
        wp_enqueue_style('reset_style', get_stylesheet_directory_uri().'/css/reset.css',
        array(), 'all');
        wp_enqueue_style('base_style', get_stylesheet_directory_uri().'/css/base_style.css',
        array('reset_style'), '1.0', 'all');
    }
    if (is_home()) {
        wp_enqueue_style('home-style', get_template_directory_uri().'/css/home.css', array(), filemtime(get_stylesheet_directory().'/css/home.css'));
    }
    if (is_single() || is_page('LART TV') || is_category() || is_page('We\'re Wearing') || is_page('archives')) {
        wp_enqueue_style('single-style', get_stylesheet_directory_uri().'/css/single.css', array(), filemtime(get_stylesheet_directory().'/css/single.css'));
        wp_enqueue_style('lightbox', get_stylesheet_directory_uri().'/css/lightbox.css',
        array(), '1.0', 'all');
    }
}

function lart_front_end_scripts() {
    wp_deregister_script('jquery');
    wp_deregister_script('jquery-migrate.min');
    wp_deregister_script('comment-reply.min');
    wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js', false, '3.6', true);
    if (!is_admin()) {
        wp_register_script('mainJS', get_template_directory_uri().'/js/mainJS.js', array('jquery', 'underscore'), filemtime(get_stylesheet_directory().'/js/mainJS.js'), true);
        wp_enqueue_script('mainJS');
        wp_register_script('hammer', get_template_directory_uri().'/js/hammer.js', array('jquery'), filemtime(get_stylesheet_directory().'/js/hammer.js'), true);
        wp_enqueue_script('hammer');
    }
    if (is_home()) {
        wp_register_script('homeJS', get_template_directory_uri().'/js/home.js', array('jquery', 'underscore', 'jquery-masonry'), filemtime(get_stylesheet_directory().'/js/home.js'), true);
        wp_enqueue_script('homeJS');
    }
    if (is_single() || is_page('LART TV') || is_category() || is_page('We\'re Wearing')) {
        wp_register_script('singleJS', get_template_directory_uri().'/js/single.js', array('jquery', 'carousel'), filemtime(get_stylesheet_directory().'/js/single.js'), true);
        wp_enqueue_script('singleJS');
        wp_register_script('lightbox', get_template_directory_uri().'/js/lightbox.js', array('jquery'), filemtime(get_stylesheet_directory().'/js/lightbox.js'), true);
        wp_enqueue_script('lightbox');
        wp_register_script('inviewJS', get_template_directory_uri().'/js/inview.js', array('jquery', 'singleJS'), filemtime(get_stylesheet_directory().'/js/inview.js'), true);
        wp_enqueue_script('inviewJS');
        wp_register_script('spinJS', get_template_directory_uri().'/js/spin.js', array('jquery'), filemtime(get_stylesheet_directory().'/js/spin.js'), true);
        wp_enqueue_script('spinJS');
        wp_register_script('carousel', get_template_directory_uri().'/js/carousel.js', array('jquery'), filemtime(get_stylesheet_directory().'/js/carousel.js'), true);
        wp_enqueue_script('carousel');
    }
    if (is_page('LART TV')) {
        wp_register_script('lartTVJS', get_template_directory_uri().'/js/lartTV.js', array('jquery', 'jquery-masonry'), filemtime(get_stylesheet_directory().'/js/lartTV.js'), true);
        wp_enqueue_script('lartTVJS');
    }
    if (is_page('We\'re Wearing')) {
        wp_register_script('whatwearingJS', get_template_directory_uri().'/js/whatwearing.js', array('jquery-masonry'), filemtime(get_stylesheet_directory().'/js/whatwearing.js'), true);
        wp_enqueue_script('whatwearingJS');
    }
    if (is_search() || is_page('archives')) {
        wp_register_script('archiveJS', get_template_directory_uri().'/js/archive.js', array('jquery'), filemtime(get_stylesheet_directory().'/js/archive.js'), true);
        wp_enqueue_script('archiveJS');
        wp_register_script('spinJS', get_template_directory_uri().'/js/spin.js', array('jquery'), filemtime(get_stylesheet_directory().'/js/spin.js'), true);
        wp_enqueue_script('spinJS');
    }
} //End add_scripts

我的脚本和样式表入队时有什么地方做错了吗?

可能是时间问题还是什么?

最佳答案

出于某种原因我没有得到(可能是浏览器的惰性计算),如果设置了 display:none;,则不会计算样式(至少在页面加载时),因此您可以'通过 window.getComputedStyle() 访问它。 我通过简单地提醒 size 变量对此进行了测试。

一种解决方法是在您的样式上使用 visibility:hidden; :

body:after {
    content:'laptop';
    visibility:hidden;
}

Here's a demo ,但你应该考虑使用@Bojangles 选项, window.matchMedia ;它会用这段代码替换你所有的代码:

if (window.matchMedia("(min-width: 10em)").matches)
    currentSize = 'mobile';

关于php - 我使用的 jQuery 未检测到 CSS 正文 :after,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22363778/

相关文章:

javascript - $.ajax() 没有在 mozilla firefox 中向服务器端触发请求

c# - Jquery/javascript 日期时间

jquery - Kendo上传控件,将自定义错误消息传递回查看

Html 选择元素选项已禁用 Microsoft Edge

php - 可移动类型的带有php的静态页面

php - Zend - SELECT 语句 "AS"

边框的CSS简写

html - 如何让CSS动画完成后不反转?里面的例子

php - 新的 mysqli 连接在我的 Cpanel 中不起作用,但在我的计算机中起作用

php - 数据在网页上显示两次,但数据库中没有重复项。为什么?