jQuery 无法识别 .removeClass() 和其他人之后的更改
jQuery doesn't recognizes changes after .removeClass() and others
我受够了一个奇怪的问题 - 或者只是常规功能.. 无论哪种方式。
我正在使用以下代码
$(function () {
$('nav.closed').click(function () {
console.log('time to open it');
$(this).removeClass('closed').addClass('opened')
$('.navBar.collapsed').removeClass('collapsed').addClass('open');
});
$('nav.opened').click(function () {
console.log('time to close it');
$(this).removeClass('opened').addClass('closed')
$('.navBar.open').removeClass('open').addClass('collapsed');
});
});
导航栏在关闭时打开,在打开时关闭。我正在使用 'open' 和 'close' 类 到 'see' 无论它是否打开,并基于此触发正确的功能。
但是.. 假设它默认关闭
当我单击导航栏(已关闭)时,它会删除 .closed
并添加 .opened
并记录 Time to open it
。当我现在第二次单击它时,它应该删除 .opened
、添加 .closed
并记录 time to close it
。然而,它认为它仍然有旧的 类,因此什么都不做,但记录 time to open it
,即使它已经打开了..
为什么 jQuery/my 脚本在页面加载时没有发生变化并保持不变..?
编辑:我正在努力实现 this nav animation,尽管有点不同。 点击主导航栏打开隐藏导航
你应该使用 $('.nav').click 并在里面写一个带有 hasClass 的 if 语句。这是因为 jQuery 只在 DOM 生成时附加了点击功能。您这里没有任何打开的 div。正确的解决方案应该是这样的:
$(function () {
$('nav').click(function () {
if($(this).hasClass("closed")) {
console.log('time to open it');
$(this).removeClass('closed').addClass('opened');
$('.navBar.collapsed').removeClass('collapsed').addClass('open');
}
else if($(this).hasClass("opened")) {
console.log('time to close it');
$(this).removeClass('opened').addClass('closed');
$('.navBar.open').removeClass('open').addClass('collapsed');
}
});
});
但是如果你这样做会更干净:
$(function () {
$('nav').click(function () {
$(this).toggleClass("opened").toggleClass("closed");
$('.navBar').toggleClass("open").toggleClass("collapsed");
});
});
我受够了一个奇怪的问题 - 或者只是常规功能.. 无论哪种方式。
我正在使用以下代码
$(function () {
$('nav.closed').click(function () {
console.log('time to open it');
$(this).removeClass('closed').addClass('opened')
$('.navBar.collapsed').removeClass('collapsed').addClass('open');
});
$('nav.opened').click(function () {
console.log('time to close it');
$(this).removeClass('opened').addClass('closed')
$('.navBar.open').removeClass('open').addClass('collapsed');
});
});
导航栏在关闭时打开,在打开时关闭。我正在使用 'open' 和 'close' 类 到 'see' 无论它是否打开,并基于此触发正确的功能。
但是.. 假设它默认关闭
当我单击导航栏(已关闭)时,它会删除 .closed
并添加 .opened
并记录 Time to open it
。当我现在第二次单击它时,它应该删除 .opened
、添加 .closed
并记录 time to close it
。然而,它认为它仍然有旧的 类,因此什么都不做,但记录 time to open it
,即使它已经打开了..
为什么 jQuery/my 脚本在页面加载时没有发生变化并保持不变..?
编辑:我正在努力实现 this nav animation,尽管有点不同。 点击主导航栏打开隐藏导航
你应该使用 $('.nav').click 并在里面写一个带有 hasClass 的 if 语句。这是因为 jQuery 只在 DOM 生成时附加了点击功能。您这里没有任何打开的 div。正确的解决方案应该是这样的:
$(function () {
$('nav').click(function () {
if($(this).hasClass("closed")) {
console.log('time to open it');
$(this).removeClass('closed').addClass('opened');
$('.navBar.collapsed').removeClass('collapsed').addClass('open');
}
else if($(this).hasClass("opened")) {
console.log('time to close it');
$(this).removeClass('opened').addClass('closed');
$('.navBar.open').removeClass('open').addClass('collapsed');
}
});
});
但是如果你这样做会更干净:
$(function () {
$('nav').click(function () {
$(this).toggleClass("opened").toggleClass("closed");
$('.navBar').toggleClass("open").toggleClass("collapsed");
});
});