使用jQuery随动画动态更改背景颜色?
我需要找到一种方法来改变/动画的背景色 如果我将背景脚本放在表单提交事件内部和ajax调用外部,我可以看到颜色的短暂变化,但当远程内容加载时,它就会消失。显然是因为它运行得太快了。如果我把ajax调用放进去,什么都不会发生使用jQuery随动画动态更改背景颜色?,jquery,css,ajax,jquery-animate,Jquery,Css,Ajax,Jquery Animate,我需要找到一种方法来改变/动画的背景色 如果我将背景脚本放在表单提交事件内部和ajax调用外部,我可以看到颜色的短暂变化,但当远程内容加载时,它就会消失。显然是因为它运行得太快了。如果我把ajax调用放进去,什么都不会发生 $(function() { $(document).on("click", ".vote_button", function(event){ var form = $(this).parent(); var page = <
$(function() {
$(document).on("click", ".vote_button", function(event){
var form = $(this).parent();
var page = <?php echo json_encode($page) ?>;
var target = $('.target');
$(form).submit(function (event) {
event.preventDefault();
$(target).animate({
backgroundColor: "#ccc"
}, 'fast' );
$(target).animate({
backgroundColor: "#fff"
}, 'slow' );
$.ajax({
type: "POST",
url: "/forms/increase_rank.php",
data: $(form).serialize(),
success: function(response){
$(function() {
getdata( page ); /* call the function onload */
});
function getdata(pageno){
var targetURL = 'search_results?page=' + pageno;
$('#retrieved-data')
.html('<p id="ajax-load">testing</p>');
$('#retrieved-data')
.load(targetURL)
.hide()
.fadeIn(1000);
}
$(form).html(response);
}
});
});
});
});
$(函数(){
$(文档)。在(“单击”、“投票”按钮)上,函数(事件){
var form=$(this.parent();
var-page=;
var target=$('.target');
$(表格)。提交(功能(事件){
event.preventDefault();
$(目标)。设置动画({
背景颜色:“ccc”
}“快”);
$(目标)。设置动画({
背景颜色:“fff”
}“慢”);
$.ajax({
类型:“POST”,
url:“/forms/rease_rank.php”,
数据:$(表单).serialize(),
成功:功能(响应){
$(函数(){
getdata(第页);/*调用函数onload*/
});
函数getdata(页码){
var targetURL='搜索结果?页面='+页面编号;
$(“#检索到的数据”)
.html(“测试”
”;
$(“#检索到的数据”)
.load(targetURL)
.hide()
.fadeIn(1000);
}
$(form).html(response);
}
});
});
});
});
我对这个答案进行了编辑,以使它更具普遍性,对希望这样做的人更有用
请记住,要使动画功能正常工作,您需要jQuery UI库
<script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
与动态颜色(颜色选择器)一起使用的基本示例:
HTML:
jQuery:
基于上述问题,我是如何做到的:
我以前出过几次错。对于我的代码(on,click),我需要等待AJAX调用完成后提交表单。此外,我没有重新加载html,而是简单地更新了成功回调中更改的内容
$(function() {
$( ".vote_button" ).on('click', function(event) {
var form = $(this).parent();
var target = $('.target');
var voteCount = $(this).siblings('#vote_count');
$(target).animate({
backgroundColor: "#ccc"
}, 'fast' );
$(target).animate({
backgroundColor: "#fff"
}, 'slow' );
$.ajax({
url: "/forms/vote.php",
type: 'POST',
data: $(form).serialize(),
success: function(data) {
$(voteCount).html(data);
}
}).done(function() {
$(form).submit(function(event) {
});
});
return false;
});
});
我对这个答案进行了编辑,以使它更具普遍性,对希望这样做的人更有用 请记住,要使动画功能正常工作,您需要jQuery UI库
<script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
与动态颜色(颜色选择器)一起使用的基本示例:
HTML:
jQuery:
基于上述问题,我是如何做到的:
我以前出过几次错。对于我的代码(on,click),我需要等待AJAX调用完成后提交表单。此外,我没有重新加载html,而是简单地更新了成功回调中更改的内容
$(function() {
$( ".vote_button" ).on('click', function(event) {
var form = $(this).parent();
var target = $('.target');
var voteCount = $(this).siblings('#vote_count');
$(target).animate({
backgroundColor: "#ccc"
}, 'fast' );
$(target).animate({
backgroundColor: "#fff"
}, 'slow' );
$.ajax({
url: "/forms/vote.php",
type: 'POST',
data: $(form).serialize(),
success: function(data) {
$(voteCount).html(data);
}
}).done(function() {
$(form).submit(function(event) {
});
});
return false;
});
});
这是一个很好的例子,但是我如何在没有按钮的情况下实时更改颜色呢?假设我正在使用颜色选择器,并且我希望div随我选择的颜色一起更新?@flade-如果你想动态更改背景颜色,你可以通过CSS从颜色选择器获取背景颜色,或者在rel属性中指定HTML颜色代码。然后,当您单击颜色时,可以将其指定给jQuery对象,并将其用作div的背景色,以相应地更新它。我添加了一个新的示例。这是一个很好的示例,但是如果没有按钮,如何实时更改颜色?假设我正在使用颜色选择器,并且我希望div随我选择的颜色一起更新?@flade-如果你想动态更改背景颜色,你可以通过CSS从颜色选择器获取背景颜色,或者在rel属性中指定HTML颜色代码。然后,当您单击颜色时,可以将其指定给jQuery对象,并将其用作div的背景色,以相应地更新它。我增加了一个新的例子。
ul {
list-style: none;
margin: 0;
padding: 0;
}
li {
width: 50px;
height: 50px;
margin-right: 10px;
display: inline-block;
cursor: pointer;
}
.black {
background-color: black;
}
.blue {
background-color: blue;
}
.green {
background-color: green;
}
.purple {
background-color: purple;
}
.target {
margin-top: 50px;
padding: 10px;
background-color: #808080;
color: #fff;
}
$(function () {
$('li').on('click', function () {
var $color = $(this).css('background-color');
$('.target').animate({
backgroundColor: $color
}, 'slow');
});
});
$(function() {
$( ".vote_button" ).on('click', function(event) {
var form = $(this).parent();
var target = $('.target');
var voteCount = $(this).siblings('#vote_count');
$(target).animate({
backgroundColor: "#ccc"
}, 'fast' );
$(target).animate({
backgroundColor: "#fff"
}, 'slow' );
$.ajax({
url: "/forms/vote.php",
type: 'POST',
data: $(form).serialize(),
success: function(data) {
$(voteCount).html(data);
}
}).done(function() {
$(form).submit(function(event) {
});
});
return false;
});
});