我看到一个奇怪的问题,ScrollTo插件滚动的距离是预期的两倍,但只在单击单选按钮或复选框标签时。
我删除了插件,用这个.
$("html, body").animate({ scrollTop: '+=50' }, 650);
然而,这个问题仍然存在。所以我试着在没有运气的情况下添加一个动画停止..。
$("html, body").stop(true, true).animate({ scrollTop: '+=50' }, 650);
然后,我为这个问题创建了一个非常基本的jsFiddle,现在我确信这是一个jQuery核心错误。在所有jQuery版本中进行测试,只要jsFiddle允许。到目前为止,在Safari、Firefox和IE8中都是一样的。
如果在单选按钮或复选框旁边有一个<label>
元素,并将其id
用作<label>
中的for
属性,则单击<label>
将选择其相应的单选按钮或复选框。(这应该是那样工作的。)
<input id="type-0" type="radio" name="name" value="" />
<label for="type-0" title="">Click this Label and Radio is selected.</label>
这里的问题是,当您单击选择单选按钮或复选框的单选按钮或复选框时,jQuery scrollTop()
会使计算的位置加倍,但仅为。当您单击其他任何内容(包括单选按钮或复选框本身)时,它会滚动适当的距离。
http://jsfiddle.net/sparky672/sZAkJ/
如您所见,单击链接到其输入元素的标签将导致双滚动。
其他一些意见:
在我的页面中,似乎滚动开始和停止两次。这就是为什么我将.stop(true, true)
添加到动画中的原因。然而,这对制止这一问题没有任何影响。
我无法避免使用标签来选择我的输入元素,因为我有另一个依赖于此的特性。(例子:http://jsfiddle.net/sparky672/CgMX8/)
我在找..。
( 1)对此作出解释。如果不是,也许只是一个(新的?)jQuery核心错误。在搜索谷歌之后,我再也找不到其他人提到这个怪癖了。jQuery bug跟踪器中也没有任何内容。
2)解决这个问题的方法,这样我就可以点击输入标签,而不是将滚动翻一番。当点击容器中的任何内容时,我想实现滚动效果,包括单选按钮和标签。我认为选择器可以被细化,这样当点击标签时,卷轴就可以被切成两半,但是当点击其他东西时仍然正常工作。(这可能也不是很好,因为它仍然看起来像是动画被激发了两次。)
发布于 2011-10-19 16:50:32
( 1)对此作出解释。如果不是,也许只是一个(新的?)jQuery核心错误。在搜索谷歌之后,我再也找不到其他人提到这个怪癖了。jQuery bug跟踪器中也没有任何内容。
这不是scrollTop
或动画的问题。这与单击click
时在#wrapper
上处理两次的label
事件有关。
当单击label
时,click
事件会冒泡到#wrapper
。但是,单击label
也会在绑定到的input
上触发一个click
事件,该事件也会出现在#wrapper
上。
要获得这方面的证据,请查看--这个示例:http://jsfiddle.net/g9gAT/。每次处理click
事件时,我都会追加目标元素的标记名。当您单击一个label
时,它会在label
后面加上input
。
2)解决这个问题的方法,这样我就可以点击输入标签,而不是将滚动翻一番。
$("#wrapper label").click(function (e) {
e.stopPropagation();
});
https://stackoverflow.com/questions/7824785
复制相似问题