我已经在Jquery中使用了slideUp/Down函数来为我的页面上的div设置动画,但它在iPhone上运行效果不佳,所以我决定编写一个Webkit等价来解决性能问题,但是你不能将回调应用到jQuery .css或.addclass.
我有这个功能:
$('#collapse').css('height','0');
Run Code Online (Sandbox Code Playgroud)
但我需要伪造一个回调基本上使这个工作:
$('#collapse').css('height','0', function() {
//do something after
});
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?
Webkit动画设置为1秒.
我正在为我正在尝试构建的网站实施David DeSandro的JQuery Masonry插件.我正在尝试在砌体函数上运行回调,以便我可以在运行后滚动到页面中的相关部分但由于某些原因在我打开动画时无法使其工作.可以在http://desandro.com/demo/masonry/docs/#options上查看文档.当我运行以下代码时,它工作正常,只有在砌体功能运行后才会发出警报:
$wall.masonry(
{
columnWidth: 216,
itemSelector: '.box:not(.invis)',
animate: false
},
function()
{
alert("Finished?");
}
);
Run Code Online (Sandbox Code Playgroud)
但是,当我运行包含动画选项的以下代码时,警报会在动画完成之前运行:
$wall.masonry(
{
columnWidth: 216,
itemSelector: '.box:not(.invis)',
animate: true,
animationOptions: {
duration: speed,
queue: false
}
},
function()
{
alert("Finished?");
}
);
Run Code Online (Sandbox Code Playgroud)
我真的很感激任何指针都可以告诉我如何防止警报发生,直到动画完成,因为我很难过!非常感谢你的帮助,
戴夫
我有以下js片段:
<script language="javascript">
function test() {
this.a = 10;
};
test.prototype.next = function () {
alert('before: ' + this.a);
$.ajax({
url: 'some-url',
async: true,
type: 'POST',
dataType: 'json',
success: this.callback
});
};
test.prototype.callback = function () {
alert('after: ' + this.a);
};
$(document).ready(function () {
var test1 = new test();
test1.next();
});
</script>
Run Code Online (Sandbox Code Playgroud)
它总是产生结果:之前:10之后:undefine.
为什么在$ .post的回调函数中,类的属性是未定义的.谁能帮助我?非常感谢.
可能重复:
$(this)AJAX内部成功无法正常工作
我正在使用一键按钮,其中有一个ajax回调.如果它返回成功,我想在我的按钮中添加一个类,$(this).addClass('abc');但没有用.
$(this)不适用于AJAX.执行此操作的替代方法是什么,因为有几个相同的块.
我有这个代码:
var callbackAfterLoad = function(data, ecBlock) {
ecBlock.html(data);
ecBlock.slideDown();
}
function bindevents(userInput, ecBlock, callbackAfterLoad) {
userInput.keyup(function () {
delay(function () {
$.post("/preview", {content:userInput.val()}, callbackAfterLoad(data, ecBlock));
}, 500);
});
}
Run Code Online (Sandbox Code Playgroud)
而这个错误:
Uncaught ReferenceError: data is not defined
Run Code Online (Sandbox Code Playgroud)
但是当我查看jQuery示例时
$.post("test.php", function(data) {
alert("Data Loaded: " + data);
});
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?为什么jQuery示例工作而不是我的?(我们不能添加参数?).是否定义了默认的$ .post回调并且他的签名无法覆盖?
我已经看到callback()概念在jQuery插件中使用了很多,我开始认为触发自定义事件可能是更好的选择.
jQuery有一个内置的触发机制('A_CUSTOM_EVENT')所以为什么插件作者不会简单地触发'COMPLETE_EVENT'而不是坚持我们传入一个回调函数来处理这个'完整阶段'.
缺口
目前正在使用fullcalendar.io
在文档中,它有calendar.fullCalendar('refetchEvents'),它从服务器重新获取所有事件.
简而言之,我希望完成calendar.fullCalendar('refetchEvents')请求并向我发送回调以告诉我.我希望在继续执行某些任务之前下载所有事件.
我怎样才能做到这一点?
jquery jquery-callback fullcalendar angularjs angularjs-directive
我为自定义确认框编写了一些代码,该框在按下确认按钮(是按钮)时调用函数并将另一个函数作为参数传递,并将其绑定到具有不同功能的 2 个不同按钮点击作为参数。例如:
$('#button1').click(function() {
callFunction(function() { alert("test"); });
});
$('#button2').click(function() {
callFunction(function() { alert("test2"); });
});
function callFunction(callback) {
//code to display custom confirm box
console.log(callback);
$('.confirm-box .yes-button').click(function() {
callback();
});
}
Run Code Online (Sandbox Code Playgroud)
一切都按预期发生,确认框出现,点击确认按钮时,我执行了一个回调函数,它会提醒“测试”(或“test2”,具体取决于哪个按钮称为确认框)。当我单击发送提醒“test”的函数的 button1 时,问题出现了,然后不是确认我取消它(没有按预期发生),然后单击将 alert("test2") 作为回调函数传递的 button2。现在,一旦我按下 yes 按钮而不是只提示“test2”,我就会同时收到“test2”和“test”提示,即使我写的 console.log 只记录了在那个 button2 时提示“test2”的函数点击。似乎这些回调函数堆积在某个地方,但我不明白在哪里以及为什么。
这是我正在使用的代码:
function load(toLoad, area){
$(area).html('<img src="images/ajax-loader.gif" alt="Loading" class="center" />');
loadContent();
function loadContent() {
$(area).load(toLoad,'',sorter())
};
function sorter() {
alert('s');
$("#myTable").tablesorter({
widgets: ['zebra']
});
};
return false
};
Run Code Online (Sandbox Code Playgroud)
调用加载函数时,警报会在显示加载图像时显示,而不是在加载完成后显示.
这有什么问题?
这就是我的HTML看起来的样子:
<ul id="list">
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
<ul>
Run Code Online (Sandbox Code Playgroud)
这是我的jQuery:
$("#list li").fadeOut(600, function(){
$.ajax({
type: "POST",
url: "includes/functions/ajax.php",
data: { id: id },
dataType: "json",
})
.done(function(data){
otherFunction(data);
});
});
Run Code Online (Sandbox Code Playgroud)
所以,我试图隐藏列表元素,然后运行ajax请求.但问题是由于某种原因,ajax请求正在执行三次.如果我删除了淡入淡出函数,请求就会正常执行(只有一次),所以可能正在运行的次数与我列表中的项目一样多,我觉得很奇怪.那可能吗?你能帮我找出解决方案吗?我真的需要只在fadeOut函数完成时才执行ajax请求.
我希望自己清楚明白,如果我搞砸了英语,我会道歉.
谢谢!
jquery ×10
jquery-callback ×10
javascript ×5
callback ×2
ajax ×1
angularjs ×1
closures ×1
fadeout ×1
fullcalendar ×1
function ×1
jquery-ui ×1