jQuery 动画的一些问题
Some problems with a jQuery animation
我第一次使用 jQuery 工作,我正在尝试在 div 上制作动画。第一个动画很顺利,但第二个动画(当我想 return 和 div 到它的原始位置时,它只是重置。我无法弄清楚。
我的jQuery:
$(document).ready(function() {
// Row one - column one.
$(document).on('click', '#row_one_column_one', function() {
$('#row_one_column_one').animate({
left: '35%',
opacity: '0.9',
height: '500px',
width: '500px'
});
$('#row_one_column_one_button').fadeIn(750);
});
$(document).on('click', '#row_one_column_one_button', function() {
$('#row_one_column_one_button').fadeOut(250);
$('#row_one_column_one').animate({
left: '100px',
opacity: '0.5',
height: '250px;'
});
});
});
我也做了一个fiddle:https://jsfiddle.net/c1he2vb8/4/
请饶了我吧,我还是菜鸟
这是因为事件delgation(冒泡),父div点击触发并重新执行动画事件,这就是它重置的原因。
为了解决这个问题,您需要将e.stopPropagation()
添加到将停止委托并仅执行"click me"按钮的点击方法的点击按钮:
$(document).on('click', '#row_one_column_one_button', function(e) {
e.stopPropagation();
$('#row_one_column_one_button').fadeOut(250);
$('#row_one_column_one').animate({
left: '100px',
opacity: '0.5',
height: '250px;'
});
});
检查事件传播的文档:https://developer.mozilla.org/en/DOM/event.stopPropagation
你的问题是,在你的第一个动画之后,两个 jQuery 函数都被触发了,因为它们相互重叠。
我删除了一个并添加了一个活动 class 使用 jQuery:
// Row one - column one.
$(document).on('click', '.test', function() {
$(this).animate({
left: '35%',
opacity: '0.9',
height: '500px',
width: '500px'
});
$(this).addClass("active");
});
$(document).on('click', '.test.active', function() {
$(this).animate({
left: '100px',
opacity: '0.5',
height: '250px;',
left: '0%',
width: '14%',
height: '100%',
opacity: '1'
});
$(this).removeClass("active");
});
我第一次使用 jQuery 工作,我正在尝试在 div 上制作动画。第一个动画很顺利,但第二个动画(当我想 return 和 div 到它的原始位置时,它只是重置。我无法弄清楚。
我的jQuery:
$(document).ready(function() {
// Row one - column one.
$(document).on('click', '#row_one_column_one', function() {
$('#row_one_column_one').animate({
left: '35%',
opacity: '0.9',
height: '500px',
width: '500px'
});
$('#row_one_column_one_button').fadeIn(750);
});
$(document).on('click', '#row_one_column_one_button', function() {
$('#row_one_column_one_button').fadeOut(250);
$('#row_one_column_one').animate({
left: '100px',
opacity: '0.5',
height: '250px;'
});
});
});
我也做了一个fiddle:https://jsfiddle.net/c1he2vb8/4/
请饶了我吧,我还是菜鸟
这是因为事件delgation(冒泡),父div点击触发并重新执行动画事件,这就是它重置的原因。
为了解决这个问题,您需要将e.stopPropagation()
添加到将停止委托并仅执行"click me"按钮的点击方法的点击按钮:
$(document).on('click', '#row_one_column_one_button', function(e) {
e.stopPropagation();
$('#row_one_column_one_button').fadeOut(250);
$('#row_one_column_one').animate({
left: '100px',
opacity: '0.5',
height: '250px;'
});
});
检查事件传播的文档:https://developer.mozilla.org/en/DOM/event.stopPropagation
你的问题是,在你的第一个动画之后,两个 jQuery 函数都被触发了,因为它们相互重叠。
我删除了一个并添加了一个活动 class 使用 jQuery:
// Row one - column one.
$(document).on('click', '.test', function() {
$(this).animate({
left: '35%',
opacity: '0.9',
height: '500px',
width: '500px'
});
$(this).addClass("active");
});
$(document).on('click', '.test.active', function() {
$(this).animate({
left: '100px',
opacity: '0.5',
height: '250px;',
left: '0%',
width: '14%',
height: '100%',
opacity: '1'
});
$(this).removeClass("active");
});