0

在我正在处理的页面中,jqueryaddClass()只是removeClass()偶尔工作。

签出: http ://retype.se/temp/scrolltest/test.html

例如第 162-171 行:

if(direction === 'down'){
     console.log('downer');
 console.log(affected);
 $(affected).removeClass('attached');
 $(affected).removeClass('parked-top');
 $(affected).addClass('parked-bottom');
}

它将 downer 和实际元素写入日志,但不更改类。

它不会抛出错误或任何东西,而只是忽略它。

编辑:将其保存到 jsfiddle, http: //jsfiddle.net/at9dZ/2/

如您所见,如果您取消注释这些行上方的警报,它将发出警报...

4

1 回答 1

4

检查您如何缓存选择器:

var affected = $(this).parent('.product').children('.price');

因此,您可以affected直接使用对象,而不是再次使用 jQuery 选择器。

if (direction === 'down'){
    console.log('downer');
    console.log(affected);
    affected.removeClass('attached');
    affected.removeClass('parked-top');
    affected.addClass('parked-bottom');
}

此外,您可以通过执行以下操作来美化它(真的只是糖):

affected.removeClass('attached parked-top').addClass('parked-bottom')

如果代码正在使用断点但在其他时间没有,这意味着在执行代码时可能没有加载 DOM,并且 jQuery 无法“找到”元素。将您的代码包装在:

$(function() {
    // Code here
});

或者..

$(document).ready(function(){ 
// Code Here
});

以确保它正确执行。

于 2012-08-24T14:19:42.857 回答