Jquery只在小窗口上触发

Iho*_*huk 6 html css jquery

我有简单的切换div.我需要在content悬停时将大屏幕段打开,并在点击时在小屏幕上打开.我尝试这样做:

HTML:

<div class="container">
    <div class="headline">Headline exaple</div>
    <p class="content">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vitae quia nulla, rem harum, minima sint assumenda perferendis cupiditate rerum corporis obcaecati, quam natus repudiandae veniam dolor. Maiores commodi sequi, esse.
    </p>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.container {
    width: 400px;
    border: 1px solid #ccc;
    border-radius: 5px;
}

.headline {
    background: #ccc;
    padding: 5px;
    cursor: pointer;
}

.headline:hover + .content {
    display: block;
}

.content {
    padding: 5px;
    display: none;
}
Run Code Online (Sandbox Code Playgroud)

jQuery的:

var isSmallWindow;
$(window).on('resize', function() {
    isSmallWindow = $(this).width() < 768;
});

$('.headline').on('click', function() {
    if (isSmallWindow) {
        $('.content').slideToggle(300);
    }
});
Run Code Online (Sandbox Code Playgroud)

但它不能正常工作.当我改变窗口大小content时,悬停时仍然打开.我点击了headline当我返回其原始位置的窗口时,然后悬停不起作用.如何解决这个问题?

的jsfiddle

Mar*_*ude 5

:hover的CSS上有伪.虽然存在,但行为仍然存在.

您可以.small-window<html>标记中添加一个类并使用它来控制它.

https://jsfiddle.net/9a1n8xtw/4/

$(window).on('resize', function() {
    isSmallWindow = $(this).width() < 768;
    if(isSmallWindow) {
        $('html').addClass('small-window');
    }else {
        $('html').removeClass('small-window');
    }
});
Run Code Online (Sandbox Code Playgroud)

和CSS

html:not(.small-window) .headline:hover + .content {
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

要避免样式覆盖,slideToggle()可以删除样式属性,如下所示:

$(window).on('resize', function() {
    isSmallWindow = $(this).width() < 768;
    if(isSmallWindow) {
        $('html').addClass('small-window');
    }else {
        $('html').removeClass('small-window');
    }
    $('.content').attr('style', false);
});
Run Code Online (Sandbox Code Playgroud)

查看更新的小提琴工作正常:

https://jsfiddle.net/9a1n8xtw/7/