为什么jquery';s addClass和removeClass函数在这种情况下不起作用?
在我正在处理的页面中,jquery的为什么jquery';s addClass和removeClass函数在这种情况下不起作用?,jquery,Jquery,在我正在处理的页面中,jquery的addClass()和removeClass()只能偶尔工作 退房: 第162-171行,例如: if(direction === 'down'){ console.log('downer'); console.log(affected); $(affected).removeClass('attached'); $(affected).removeClass('parked-top'); $(affected).addClass('par
addClass()
和removeClass()
只能偶尔工作
退房:
第162-171行,例如:
if(direction === 'down'){
console.log('downer');
console.log(affected);
$(affected).removeClass('attached');
$(affected).removeClass('parked-top');
$(affected).addClass('parked-bottom');
}
它将downer和实际元素写入日志,但不更改类
它不会抛出错误或任何东西,只是忽略它
编辑:将其保存到JSFIDLE,
如您所见,如果取消注释这些行上方的警报,它将发出警报…检查您如何缓存选择器:
var affected = $(this).parent('.product').children('.price');
因此,您可以直接使用受影响的对象
,而不是再次使用jQuery选择器
if (direction === 'down'){
console.log('downer');
console.log(affected);
affected.removeClass('attached');
affected.removeClass('parked-top');
affected.addClass('parked-bottom');
}
此外,您可以通过以下操作(真的,只需糖):
如果代码使用断点,但在其他时间不使用断点,这意味着执行代码时可能没有加载DOM,jQuery无法“找到”元素。将代码包装为:
$(function() {
// Code here
});
或者
确保它正确执行。检查如何缓存选择器:
var affected = $(this).parent('.product').children('.price');
因此,您可以直接使用受影响的对象
,而不是再次使用jQuery选择器
if (direction === 'down'){
console.log('downer');
console.log(affected);
affected.removeClass('attached');
affected.removeClass('parked-top');
affected.addClass('parked-bottom');
}
此外,您可以通过以下操作(真的,只需糖):
如果代码使用断点,但在其他时间不使用断点,这意味着执行代码时可能没有加载DOM,jQuery无法“找到”元素。将代码包装为:
$(function() {
// Code here
});
或者
确保它正确执行。哪里定义了
受影响的?这将更容易在JSFIDD中调试,确认方向等于“向下”
,并且受影响的包含代码中该点的预期元素。是的,方向向下且受影响的包含正确的元素。相信我。。。我可以在这些行的两侧运行警报和日志,并获得预期的结果。您不需要使用$(受影响)
因为受影响的已经是一个jQuery对象,其中定义了受影响的?这将更容易在JSFIDLE中调试,确认方向等于'down'
,并且受影响的包含代码中该点的预期元素。是,方向向下并受影响,包含正确的元素。相信我。。。我可以在这些行的两侧运行警报和日志,并获得预期的结果。您不需要使用$(受影响的)
,因为受影响的
已经是jQuery objectNice捕获。这就是为什么我觉得在包含jQuery选择器的变量前面加上$
,即$impacted
前缀很方便。jonas,我将断点设置为160,并在控制台中逐步执行代码-这些类按预期添加和删除。您可能想尝试同样的方法,看看是否还有另一个逻辑错误。谢谢,但是如果您在没有断点的情况下运行它,它会工作吗?对我来说不是。Nic,再次感谢,但document.ready()似乎也不是。它更新了fiddle。@jonas我认为你的顶级函数正在重写你的第二个函数。我不完全确定您想要完成什么,所以修复起来有点困难,但语法是正确的。您的.product
和.product.bottom
航路点处理程序出现逻辑问题,因为它们似乎同时被触发。捕捉得很好。这就是为什么我觉得在包含jQuery选择器的变量前面加上$
,即$impacted
前缀很方便。jonas,我将断点设置为160,并在控制台中逐步执行代码-这些类按预期添加和删除。您可能想尝试同样的方法,看看是否还有另一个逻辑错误。谢谢,但是如果您在没有断点的情况下运行它,它会工作吗?对我来说不是。Nic,再次感谢,但document.ready()似乎也不是。它更新了fiddle。@jonas我认为你的顶级函数正在重写你的第二个函数。我不完全确定您想要完成什么,所以修复起来有点困难,但语法是正确的。.product
和.product.bottom
航路点处理程序出现逻辑问题,因为它们似乎同时被触发。