我試圖使用手風琴slidetoggle導航當屏幕寬度小於1200px,然後想要禁用/刪除滑動功能時,它是大於1200px寬。如何覆蓋jquery slidetoggle當屏幕尺寸變化
問題:當我在桌面寬度中加載頁面時,一切正常,因爲我沒有觸發slideToggle,直到屏幕寬度爲「移動」大小... < 1200px。
如果我然後調整屏幕的移動,我切換的div已經顯現,甚至沒有點擊它們。如果我調整到桌面寬度一切都很好 - 切換div已消失。如果我再次調整到移動設備的大小,然後點擊主鏈接切換div,並將其切換爲打開狀態,然後調整到桌面,我的內容將不可見,但導航鏈接不一致。當我看着CSS我看到有一個內聯的CSS顯示:切換div的塊。
儘管我多次試圖重寫內嵌樣式(的CSS,.removeClass,.addClass,.attr等)的代碼行該死持續。
更新:我寫了一條IF語句來檢查切換的div是否顯示:塊,只要有一個屏幕調整大小,並且它大於1200px寬。這個測試每次都會返回false,但是我可以看到元素的內聯css:display:block。這怎麼會發生?這是測試的代碼。也看到圖像。
if ($('mobile-child-nav-links').css('display') == 'block') {
console.log("tested true");
$('mobile-child-nav-links').css('display', 'none');
} else {
console.log("tested false");
}
Dev Tools showing that the element has inline style set to display:block
Dev Tools console showing my if statement is not detecting display:block when it is clearly there
什麼交易?請看下面的代碼:
<script>
// Responsive accordian menu jquery
$(document).ready(function() {
var win = $(this); //this = window
var currentScreenWidth;
var mobileLinksDiv = $('mobile-child-nav-links');
var mobileLinksDivs = $('mobile-child-nav-link');
function getScreenWidth() {
return currentScreenWidth = $(window).width();
}
function enableMobileNav() {
// toggle on click of primary nav link
$('.primary-nav-link').off('click').on('click', function(e) { // prevents multiple click events from screen resizes
e.preventDefault();
$('.primary-nav-link').addClass('mobile-active-primary-link');
// locate the next sub menu div containing sub nav links and toggle it into view
var subNavContainer = $(this).nextAll('.mobile-child-nav-links').eq(0).toggle();
});
}
function disableMobileNav() {
$('.mobile-child-nav-links').addClass('hideEls');
$('.primary-nav-link').removeClass('mobile-active-primary-link');
$('.primary-nav-link').off('click'); // remove click binding to avoid multiple .click events at once
$('mobile-child-nav-links').hide(); // ensure that sub nav div and links are hidden
}
// Checking page width on initial page load
if (getScreenWidth() >= 1200) {
// do nothing
} else {
enableMobileNav();
}
// Screen resizing triggers this function
$(window).on('resize', function(e){
currentScreenWidth = $(window).width();
if (currentScreenWidth >= 1200) {
$('.mobile-child-nav-links').addClass('hideEls');
disableMobileNav();
} else {
enableMobileNav();
}
});
});
</script>
CSS
/* ================= Mobile Accordian Sub Nav ======================= */
/*Sub nav links for mobile device nav */
div.mobile-child-nav-links, div.mobile-child-nav-link {
display: none;
/*visibility: hidden;*/
background-color: #AF251F !important;
color: white !important;
letter-spacing: .1em;
text-transform: uppercase;
padding: .5em;
font-size: .8em;
font-weight: 400;
padding-left: 1em;
}
@media screen and (max-width: 1200px) {
div.mobile-child-nav-links, div.mobile-child-nav-link {
display: block;
/*visibility: visible;*/
}
}
.hideEls {
display: none;
/*visibility: hidden;*/
}
.showEls {
display: block;
/* visibility: visible;*/
}
我嘗試覆蓋樣式並刪除它沒有任何改變。 jQuery中的內聯顯示塊不會發出警告。 – user2305363
謝謝......是的,我找到了那些缺失的時期,並在今天早些時候修復了這個問題。 – user2305363
啊我看到了,我發現你找到了解決辦法。不錯:]不幸的是,你的內聯樣式太固執了。只是好奇,你能粘貼你正在使用的HTML部分嗎? – sm1215