[英]jQuery / Javascript - Is it possible to get the next call in the chain
[英]Call JavaScript function in a jQuery chain
function jsFunc() {
alert('i am js!');
}
$('#node').slideDown().call(jsFunc());
當然,該功能不稱為“調用”。
**編輯**
(代表OP添加了解決方案) 。
要么
HTML:
<div id="content">
<p class="article">
this is an article
</p>
</div>
JavaScript的:
function callBack() {
$("#content .article").html("the callback has been called");
}
$(document).ready(function() {
$("#content .article").slideUp(0);
$("#content .article").each(function(i) {
$(this).delay(i*250).slideDown(function(){
//if ($("#content .article:animated").length < 1) {
callBack();
//}
});
});
});
默認情況下,您無法執行此操作,但可以輕松將其添加為插件:
$.fn.call = function (fn, args, thisp) {
fn.apply(thisp || this, args);
return this; // if you want to maintain chainability -- other wise, you can move the return up one line..
}
盡管我不確定您為什么要這么做。 如果您認為它要等到slide
完成后才能運行,否則您會錯的,因為jQuery動畫是異步的。
為什么不只使用回調函數? 幾乎所有的jQuery函數都有它們。
$('#node').slidedown('normal', function(){jsFunc()})
$("#content article").each(function(i) {
$(this).delay(i*250).slideDown();
}).callBack();
在鏈中擁有回調的全部原因是這樣,它將在所有動畫發生后運行。
試試這個,
$("#content .article").each(function(i) {
$(this).delay(i*250).slideDown(function(){
if ($("#content .article:animated").length < 1) {
callBack();
}
});
});
調用jsFunc()的目的是什么?
如果你想把它當作一個回調,您可以使用給出的sysntax 這里例如:
$('#node').slidedown('normal', function(){jsFunc()}).
但是,如果希望函數jsFunc能夠作為插件調用,則需要按照CD Sanchez的建議編寫一個插件。
我再次認為示例代碼中存在一個問題,您正在調用jsFunc函數,並將jsFunc返回的值作為參數傳遞給call函數。 如果要傳遞函數jsFunc作為回調函數,則需要使用語法
$('#node').slideDown().call(jsFunc);
(代表OP添加了解決方案) 。
要么
HTML:
<div id="content">
<p class="article">
this is an article
</p>
</div>
JavaScript的:
function callBack() {
$("#content .article").html("the callback has been called");
}
$(document).ready(function() {
$("#content .article").slideUp(0);
$("#content .article").each(function(i) {
$(this).delay(i*250).slideDown(function(){
//if ($("#content .article:animated").length < 1) {
callBack();
//}
});
});
});
$("#content article").each(function(i) {
$(this).delay(i*250).slideDown();
}).callBack();
在鏈中擁有回調的全部原因是這樣,它將在所有動畫觸發器都發生之后運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.