如果屏幕小于 767 像素 (jQuery),则隐藏特定的 HTML 元素
Hide specific HTML element if screen is smaller than 767px (jQuery)
在我的一个网站上,如果屏幕小于 767 像素(在移动设备上),我想删除特定的 HTML 元素。
下面的HTML在页面上被使用了9次:
<div class="price-list__item-desc"> </div>
因此 HTML 的全部 9 部分必须仅在移动设备上删除。
我已经在网站上包含了以下 jQuery 文件:
jQuery(function ($) {
if (window.matchMedia('(max-width: 767px)').matches) {
$('<div class="price-list__item-desc"> </div>').hide();
}
else {
$('<div class="price-list__item-desc"> </div>').show();
}
});
但是,代码不起作用,HTML 的片段仍然显示在移动设备上。我知道这个特定的 objective 可能有一个非常简单的修复方法。但是在网上搜索了两天后,我遇到了这么多不同的选择,实际上让我更加困惑。
非常感谢任何帮助,在此先感谢!
没有任何东西调用你的函数。请改用媒体查询。
更新:我添加了一些 js 来解决您的问题。如果你想隐藏(所以 div 仍然占用 space 但没有显示任何东西)那么你的问题就没有意义。如果要删除 div,则将显示设置为 none。 js用来抓取你想要的div
let divs = document.getElementsByClassName('price-list__item-desc')
for(let i = 0; i < divs.length; i++){
if (divs[i].innerHTML == " ")divs[i].classList.add('hide')
}
@media (max-width: 767px) {
.hide{
display:none;}
}
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc">6</div>
<div class="price-list__item-desc">7</div>
<div class="price-list__item-desc">8</div>
<div class="price-list__item-desc">9</div>
第一种方法,当页面width
改变时,通过控制页面width
.[=17]使用jQuery隐藏或显示div.price-list__item-desc
元素=]
在您开发的方法中,匿名函数不是运行在页面变化时隐藏项目;您需要使用事件处理程序方法。在我开发的结构中, onresize
事件在页面宽度变化时受到影响。这样我就可以在页面宽度变化时捕捉到这个事件。
$( document ).ready(function() {
window.onresize = function() {
console.log(`Width: ${$( window ).width()}`);
var divs = document.querySelectorAll("div.price-list__item-desc");
if (window.matchMedia('(max-width: 767px)').matches)
{
$('div.price-list__item-desc').removeClass("active");
for (var i = 0; i < divs.length; i++)
{
if(divs[i].innerHTML === ' ')
divs[i].style.display = "none";
else
divs[i].style.display = "block";
}
}
else
{
$('div.price-list__item-desc').addClass("active");
}
}
window.onresize();
});
div.price-list__item-desc {
background-color: red;
display: none;
}
.active{
display: block !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc">1</div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc">2</div>
<div class="price-list__item-desc"> </div>
在我的一个网站上,如果屏幕小于 767 像素(在移动设备上),我想删除特定的 HTML 元素。
下面的HTML在页面上被使用了9次:
<div class="price-list__item-desc"> </div>
因此 HTML 的全部 9 部分必须仅在移动设备上删除。
我已经在网站上包含了以下 jQuery 文件:
jQuery(function ($) {
if (window.matchMedia('(max-width: 767px)').matches) {
$('<div class="price-list__item-desc"> </div>').hide();
}
else {
$('<div class="price-list__item-desc"> </div>').show();
}
});
但是,代码不起作用,HTML 的片段仍然显示在移动设备上。我知道这个特定的 objective 可能有一个非常简单的修复方法。但是在网上搜索了两天后,我遇到了这么多不同的选择,实际上让我更加困惑。
非常感谢任何帮助,在此先感谢!
没有任何东西调用你的函数。请改用媒体查询。
更新:我添加了一些 js 来解决您的问题。如果你想隐藏(所以 div 仍然占用 space 但没有显示任何东西)那么你的问题就没有意义。如果要删除 div,则将显示设置为 none。 js用来抓取你想要的div
let divs = document.getElementsByClassName('price-list__item-desc')
for(let i = 0; i < divs.length; i++){
if (divs[i].innerHTML == " ")divs[i].classList.add('hide')
}
@media (max-width: 767px) {
.hide{
display:none;}
}
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc">6</div>
<div class="price-list__item-desc">7</div>
<div class="price-list__item-desc">8</div>
<div class="price-list__item-desc">9</div>
第一种方法,当页面width
改变时,通过控制页面width
.[=17]使用jQuery隐藏或显示div.price-list__item-desc
元素=]
在您开发的方法中,匿名函数不是运行在页面变化时隐藏项目;您需要使用事件处理程序方法。在我开发的结构中, onresize
事件在页面宽度变化时受到影响。这样我就可以在页面宽度变化时捕捉到这个事件。
$( document ).ready(function() {
window.onresize = function() {
console.log(`Width: ${$( window ).width()}`);
var divs = document.querySelectorAll("div.price-list__item-desc");
if (window.matchMedia('(max-width: 767px)').matches)
{
$('div.price-list__item-desc').removeClass("active");
for (var i = 0; i < divs.length; i++)
{
if(divs[i].innerHTML === ' ')
divs[i].style.display = "none";
else
divs[i].style.display = "block";
}
}
else
{
$('div.price-list__item-desc').addClass("active");
}
}
window.onresize();
});
div.price-list__item-desc {
background-color: red;
display: none;
}
.active{
display: block !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc">1</div>
<div class="price-list__item-desc"> </div>
<div class="price-list__item-desc">2</div>
<div class="price-list__item-desc"> </div>