如果我有这样的代码,滑块将不会滑动:
var $root = $('html, body');
$('.main-menu a').each(function () {
// capture the offset on init not click
var that = $(this),
offset = $(that.attr('href')).offset().top - $('nav.main-menu').height() + 1;
// then use that offset, so we are not querying for id on each click
that.click(function () {
$root.animate({
scrollTop: offset
}, 2000);
});
});
$('.cycle-container').each(function () {
$(this).cycle({
fx: 'scrollLeft',
speed: 'slow',
timeout: 0,
next: this
});
});
如果我改成它:它有效。 :■
$('.cycle-container').each(function () {
$(this).cycle({
fx: 'scrollLeft',
speed: 'slow',
timeout: 0,
next: this
});
});
var $root = $('html, body');
$('.main-menu a').each(function () {
// capture the offset on init not click
var that = $(this),
offset = $(that.attr('href')).offset().top - $('nav.main-menu').height() + 1;
// then use that offset, so we are not querying for id on each click
that.click(function () {
$root.animate({
scrollTop: offset
}, 2000);
});
});
我是js的新手。我刚刚切换订单。任何理由或想法为什么这个命令会使代码工作,而第一个命令却没有?
通过不起作用,我的意思是,我点击滑块,它不会滑动。
我转到 firebug ,点击控制台,然后点击全部,我看到了:
TypeError: d.detachEvent is not a function
[Break On This Error]
if ( event.target.nodeType === 3 ) {
和
"CSS Usage: initializing extensions" TypeError: $(...).offset(...) is undefined [Break On This Error]
return event.result;
第一个,由jquery1.9.1本人返回,但我没有碰它。
html结构:
<div class="cycle-container">
<div id="row-slide2">
<section id="slide2">
<h1>bla bla</h1>
<p>ble ble ble</p>
</section>
</div>
<div id="row-slide2-1">
<section id="slide2-1">
<h1>bli bli</h1>
<div class="table">
<div class="column">
<h2>blo blo</h2>
<p>blu blu</p>
</div>
</div>
</section>
</div>
</div>
Jquery 1.9.1;
Waypoints插件;
循环插件;
更新 如果我将代码更改为:
var that = $(this);
var offset = $(that.attr('href')).offset().top-$('nav.main-menu').height()+1;
而不是:
var that = $(this),
offset = $(that.attr('href')).offset().top-$('nav.main-menu').height()+1;
实际上,在处理任何一个订单。 :S
唯一的问题是,代码现在会产生不希望的眨眼。 并且,在控制台上仍会出现此错误:
TypeError: $(...).offset(...) is undefined
[Break On This Error]
var offset = $(that.attr('href')).offset().top-$('nav.main-menu').height()+1;
请相应检查jsfiddle: http://jsfiddle.net/talofo/Hq9NL/2/
关于这个小提琴的说明: 小提琴或多或少代表我的本地代码。但是,从一开始,本地代码顺序确实很重要,并且在小提琴上它永远不重要,它始终有效。
答案 0 :(得分:1)
我最终放弃了所有偏移的东西:
我刚刚做了:
var $root = $('html, body');
$('.main-menu a').click(function() {
$root.animate({
scrollTop: $($(this).attr('href')).offset().top-$('nav.main-menu').height()+1
}, 2000
);
return false;
});
并改变了html结构。 所以,现在设置了onclick。
我的航点调用改为:
$('#container>div').each(function()
感谢您抽出宝贵时间。抱歉这么具体。我会保留这个,因为,出于某种原因,有人可能会发现它很有用,并且,在我看来,订单问题可能依赖于控制台错误或糟糕的html结构。